draft-ietf-calext-jscalendar-20.txt   draft-ietf-calext-jscalendar-21.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 17, 2020 October 15, 2019 Expires: April 30, 2020 October 28, 2019
JSCalendar: A JSON representation of calendar data JSCalendar: A JSON representation of calendar data
draft-ietf-calext-jscalendar-20 draft-ietf-calext-jscalendar-21
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 17, 2020. This Internet-Draft will expire on April 30, 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 44 skipping to change at page 2, line 44
4.1.1. @type . . . . . . . . . . . . . . . . . . . . . . . . 12 4.1.1. @type . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1.2. uid . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1.2. uid . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.1.3. relatedTo . . . . . . . . . . . . . . . . . . . . . . 13 4.1.3. relatedTo . . . . . . . . . . . . . . . . . . . . . . 13
4.1.4. prodId . . . . . . . . . . . . . . . . . . . . . . . 13 4.1.4. prodId . . . . . . . . . . . . . . . . . . . . . . . 13
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 . . . . . . . . . . . . . . . . . . . . . 15
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 . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2.11. color . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3. Recurrence Properties . . . . . . . . . . . . . . . . . . 20 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 . . . . . . . . . . . . 30
4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 29 4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 30
4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 30 4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 30
4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 30 4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 30
4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 31 4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 32
4.4.5. participants . . . . . . . . . . . . . . . . . . . . 32 4.4.5. participants . . . . . . . . . . . . . . . . . . . . 32
4.5. Alerts Properties . . . . . . . . . . . . . . . . . . . . 36 4.5. Alerts Properties . . . . . . . . . . . . . . . . . . . . 37
4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 36 4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 37
4.5.2. alerts . . . . . . . . . . . . . . . . . . . . . . . 36 4.5.2. alerts . . . . . . . . . . . . . . . . . . . . . . . 37
4.6. Multilingual Properties . . . . . . . . . . . . . . . . . 39 4.6. Multilingual Properties . . . . . . . . . . . . . . . . . 39
4.6.1. localizations . . . . . . . . . . . . . . . . . . . . 39 4.6.1. localizations . . . . . . . . . . . . . . . . . . . . 39
4.7. Time Zone Properties . . . . . . . . . . . . . . . . . . 39 4.7. Time Zone Properties . . . . . . . . . . . . . . . . . . 40
4.7.1. timeZone . . . . . . . . . . . . . . . . . . . . . . 39 4.7.1. timeZone . . . . . . . . . . . . . . . . . . . . . . 40
4.7.2. timeZones . . . . . . . . . . . . . . . . . . . . . . 40 4.7.2. timeZones . . . . . . . . . . . . . . . . . . . . . . 40
5. Type-specific JSCalendar Properties . . . . . . . . . . . . . 42 5. Type-specific JSCalendar Properties . . . . . . . . . . . . . 42
5.1. JSEvent Properties . . . . . . . . . . . . . . . . . . . 42 5.1. JSEvent Properties . . . . . . . . . . . . . . . . . . . 42
5.1.1. start . . . . . . . . . . . . . . . . . . . . . . . . 42 5.1.1. start . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.2. duration . . . . . . . . . . . . . . . . . . . . . . 42 5.1.2. duration . . . . . . . . . . . . . . . . . . . . . . 43
5.1.3. status . . . . . . . . . . . . . . . . . . . . . . . 43 5.1.3. status . . . . . . . . . . . . . . . . . . . . . . . 43
5.2. JSTask Properties . . . . . . . . . . . . . . . . . . . . 43 5.2. JSTask Properties . . . . . . . . . . . . . . . . . . . . 43
5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.3. estimatedDuration . . . . . . . . . . . . . . . . . . 43 5.2.3. estimatedDuration . . . . . . . . . . . . . . . . . . 44
5.2.4. statusUpdatedAt . . . . . . . . . . . . . . . . . . . 43 5.2.4. progress . . . . . . . . . . . . . . . . . . . . . . 44
5.2.5. progress . . . . . . . . . . . . . . . . . . . . . . 44 5.2.5. progressUpdated . . . . . . . . . . . . . . . . . . . 45
5.2.6. status . . . . . . . . . . . . . . . . . . . . . . . 45
5.3. JSGroup Properties . . . . . . . . . . . . . . . . . . . 45 5.3. JSGroup Properties . . . . . . . . . . . . . . . . . . . 45
5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 46 5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 46
5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 46 5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 46
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 46 6.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 46
6.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 47 6.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 46
6.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 47 6.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 47
6.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 48 6.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 47
6.5. Task with a due date . . . . . . . . . . . . . . . . . . 48 6.5. Task with a due date . . . . . . . . . . . . . . . . . . 48
6.6. Event with end time-zone . . . . . . . . . . . . . . . . 49 6.6. Event with end time-zone . . . . . . . . . . . . . . . . 48
6.7. Floating-time event (with recurrence) . . . . . . . . . . 49 6.7. Floating-time event (with recurrence) . . . . . . . . . . 49
6.8. Event with multiple locations and localization . . . . . 50 6.8. Event with multiple locations and localization . . . . . 49
6.9. Recurring event with overrides . . . . . . . . . . . . . 51 6.9. Recurring event with overrides . . . . . . . . . . . . . 50
6.10. Recurring event with participants . . . . . . . . . . . . 52 6.10. Recurring event with participants . . . . . . . . . . . . 51
7. Security Considerations . . . . . . . . . . . . . . . . . . . 54 7. Security Considerations . . . . . . . . . . . . . . . . . . . 53
7.1. Expanding Recurrences . . . . . . . . . . . . . . . . . . 54 7.1. Expanding Recurrences . . . . . . . . . . . . . . . . . . 53
7.2. JSON Parsing . . . . . . . . . . . . . . . . . . . . . . 54 7.2. JSON Parsing . . . . . . . . . . . . . . . . . . . . . . 53
7.3. URI Values . . . . . . . . . . . . . . . . . . . . . . . 55 7.3. URI Values . . . . . . . . . . . . . . . . . . . . . . . 54
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54
8.1. Media Type Registration . . . . . . . . . . . . . . . . . 55 8.1. Media Type Registration . . . . . . . . . . . . . . . . . 54
8.2. Creation of "JSCalendar Properties" Registry . . . . . . 56 8.2. Creation of "JSCalendar Properties" Registry . . . . . . 55
8.2.1. Preliminary Community Review . . . . . . . . . . . . 57 8.2.1. Preliminary Community Review . . . . . . . . . . . . 56
8.2.2. Submit Request to IANA . . . . . . . . . . . . . . . 57 8.2.2. Submit Request to IANA . . . . . . . . . . . . . . . 56
8.2.3. Designated Expert Review . . . . . . . . . . . . . . 57 8.2.3. Designated Expert Review . . . . . . . . . . . . . . 56
8.2.4. Change Procedures . . . . . . . . . . . . . . . . . . 58 8.2.4. Change Procedures . . . . . . . . . . . . . . . . . . 57
8.2.5. JMAP Properties Registry Template . . . . . . . . . . 58 8.2.5. JMAP Properties Registry Template . . . . . . . . . . 57
8.2.6. Initial Contents for the JSCalendar Properties 8.2.6. Initial Contents for the JSCalendar Properties
Registry . . . . . . . . . . . . . . . . . . . . . . 59 Registry . . . . . . . . . . . . . . . . . . . . . . 58
8.3. Creation of "JSCalendar Types" Registry . . . . . . . . . 66 8.3. Creation of "JSCalendar Types" Registry . . . . . . . . . 67
8.3.1. JMAP Types Registry Template . . . . . . . . . . . . 66 8.3.1. JMAP Types Registry Template . . . . . . . . . . . . 67
8.3.2. Initial Contents for the JSCalendar Properties 8.3.2. Initial Contents for the JSCalendar Types Registry . 67
Registry . . . . . . . . . . . . . . . . . . . . . . 67
8.4. Creation of "JSCalendar Enum Values" Registry . . . . . . 69 8.4. Creation of "JSCalendar Enum Values" Registry . . . . . . 69
8.4.1. JMAP Enum Subregistry Creation Template . . . . . . . 69 8.4.1. JMAP Enum Subregistry Creation Template . . . . . . . 69
8.4.2. JMAP Enum Subregistry Creation Template . . . . . . . 69 8.4.2. JMAP Enum Subregistry Creation Template . . . . . . . 69
8.4.3. Initial Contents for the JSCalendar Enum Registry . . 69 8.4.3. Initial Contents for the JSCalendar Enum Registry . . 69
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 76 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 75
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 76 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 75
10.1. Normative References . . . . . . . . . . . . . . . . . . 76 10.1. Normative References . . . . . . . . . . . . . . . . . . 75
10.2. Informative References . . . . . . . . . . . . . . . . . 78 10.2. Informative References . . . . . . . . . . . . . . . . . 78
10.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 79 10.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 79 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 78
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 13, line 47 skipping to change at page 13, line 47
MUST be set on the original object's relatedTo property for the UID MUST be set on the original object's relatedTo property for the UID
of the new object. A "first" relation for the UID of the first of the new object. A "first" relation for the UID of the first
object in the series MUST be set on the new object. Clients can then object in the series MUST be set on the new object. Clients can then
follow these UIDs to get the complete set of objects if the user follow these UIDs to get the complete set of objects if the user
wishes to modify them all at once. wishes to modify them all at once.
4.1.4. prodId 4.1.4. prodId
Type: "String" (optional). Type: "String" (optional).
The identifier for the product that created the JSCalendar object. The identifier for the product that last updated the JSCalendar
object. This should be set whenever the data in the object is
modified (i.e., whenever the "updated" property is set).
The vendor of the implementation SHOULD ensure that this is a The vendor of the implementation SHOULD ensure that this is a
globally unique identifier, using some technique such as an FPI globally unique identifier, using some technique such as an FPI
value, as defined in [ISO.9070.1991]. It MUST only use characters of value, as defined in [ISO.9070.1991]. It MUST only use characters of
an iCalendar TEXT data value (see Section 3.3.11 of [RFC5545]). an iCalendar TEXT data value (see Section 3.3.11 of [RFC5545]).
This property SHOULD NOT be used to alter the interpretation of a This property SHOULD NOT be used to alter the interpretation of a
JSCalendar object beyond the semantics specified in this document. JSCalendar object beyond the semantics specified in this document.
For example, it is not to be used to further the understanding of For example, it is not to be used to further the understanding of
non-standard properties. non-standard properties.
skipping to change at page 16, line 11 skipping to change at page 16, line 15
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) o locationTypes: "String[Boolean]" (optional)
A set of one or more location types that describe this location. A set of one or more location types that describe this location.
All types MUST be from the Location Types Registry as defined in All types MUST be from the Location Types Registry as defined in
[RFC4589]. The set is represented as a map, with the keys being [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 the location types. The value for each key in the map MUST be
true. 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.
skipping to change at page 21, line 41 skipping to change at page 21, line 44
lowercase. This MUST be either a CLDR-registered calendar system lowercase. This MUST be either a CLDR-registered calendar system
name, or a non-standard, experimental calendar system name name, or a non-standard, experimental calendar system name
prefixed with the characters "x-". prefixed with the characters "x-".
This is the RSCALE part from iCalendar RSCALE [RFC7529], converted This is the RSCALE part from iCalendar RSCALE [RFC7529], converted
to lowercase. to lowercase.
o skip: "String" (optional, default: "omit") o skip: "String" (optional, default: "omit")
The behaviour to use when the expansion of the recurrence produces The behaviour to use when the expansion of the recurrence produces
invalid dates. This MUST be one of the following values: invalid dates. This property only has an effect if the frequency
is "yearly" or "monthly". It MUST be one of the following values:
* "omit" * "omit"
* "backward" * "backward"
* "forward" * "forward"
This is the SKIP part from iCalendar RSCALE [RFC7529], converted This is the SKIP part from iCalendar RSCALE [RFC7529], converted
to lowercase. to lowercase.
o firstDayOfWeek: "String" (optional, default: "mo") o firstDayOfWeek: "String" (optional, default: "mo")
The day on which the week is considered to start, represented as a The day on which the week is considered to start, represented as a
lowercase abbreviated two-letter English day of the week. If lowercase abbreviated two-letter English day of the week. If
included, it MUST be one of the following values: included, it MUST be one of the following values:
* "mo" * "mo"
* "tu" * "tu"
* "we" * "we"
skipping to change at page 23, line 4 skipping to change at page 23, line 6
If present, rather than representing every occurrence of the If present, rather than representing every occurrence of the
weekday defined in the "day" property, it represents only a weekday defined in the "day" property, it represents only a
specific instance within the recurrence period. The value can specific instance within the recurrence period. The value can
be positive or negative, but MUST NOT be zero. A negative be positive or negative, but MUST NOT be zero. A negative
integer means nth-last of period. integer means nth-last of period.
This is the ordinal part of the BYDAY value in iCalendar (e.g. This is the ordinal part of the BYDAY value in iCalendar (e.g.
1 or -3). 1 or -3).
o byMonthDay: "Int[]" (optional) o byMonthDay: "Int[]" (optional)
Days of the month on which to repeat. Valid values are 1 to 31 or
-31 to -1. Negative values offset from the end of the month. The Days of the month on which to repeat. Valid values are between 1
array MUST have at least one entry if included. and the maximum number of days any month may have in the calendar
given by the "rscale" property, and the negative values of these
numbers. For example, in the Gregorian calendar valid values are
1 to 31 and -31 to -1. Negative values offset from the end of the
month. The array MUST have at least one entry if included.
This is the BYMONTHDAY part in iCalendar. This is the BYMONTHDAY part in iCalendar.
o byMonth: "String[]" (optional) o byMonth: "String[]" (optional)
The months in which to repeat. Each entry is a string The months in which to repeat. Each entry is a string
representation of a number, starting from "1" for the first month representation of a number, starting from "1" for the first month
in the calendar (e.g. "1" means January with the Gregorian in the calendar (e.g. "1" means January with the Gregorian
calendar), with an optional "L" suffix (see [RFC7529]) for leap calendar), with an optional "L" suffix (see [RFC7529]) for leap
months (this MUST be uppercase, e.g. "3L"). The array MUST have months (this MUST be uppercase, e.g. "3L"). The array MUST have
at least one entry if included. at least one entry if included.
This is the BYMONTH part from iCalendar. This is the BYMONTH part from iCalendar.
o byYearDay: "Int[]" (optional) o byYearDay: "Int[]" (optional)
The days of the year on which to repeat. Valid values are 1 to The days of the year on which to repeat. Valid values are between
366 or -366 to -1. Negative values offset from the end of the 1 and the maximum number of days any year may have in the calendar
year. The array MUST have at least one entry if included. given by the "rscale" property, and the negative values of these
numbers. For example, in the Gregorian calendar valid values are
1 to 366 and -366 to -1. Negative values offset from the end of
the year. The array MUST have at least one entry if included.
This is the BYYEARDAY part from iCalendar. This is the BYYEARDAY part from iCalendar.
o byWeekNo: "Int[]" (optional) o byWeekNo: "Int[]" (optional)
Weeks of the year in which to repeat. Valid values are 1 to 53 or Weeks of the year in which to repeat. Valid values are between 1
-53 to -1. The array MUST have at least one entry if included. and the maximum number of weeks any year may have in the calendar
given by the "rscale" property, and the negative values of these
numbers. For example, in the Gregorian calendar valid values are
1 to 53 and -53 to -1. The array MUST have at least one entry if
included.
This is the BYWEEKNO part from iCalendar. This is the BYWEEKNO part from iCalendar.
o byHour: "UnsignedInt[]" (optional) o byHour: "UnsignedInt[]" (optional)
The hours of the day in which to repeat. Valid values are 0 to The hours of the day in which to repeat. Valid values are 0 to
23. The array MUST have at least one entry if included. This is 23. The array MUST have at least one entry if included. This is
the BYHOUR part from iCalendar. the BYHOUR part from iCalendar.
o byMinute: "UnsignedInt[]" (optional) o byMinute: "UnsignedInt[]" (optional)
The minutes of the hour in which to repeat. Valid values are 0 to The minutes of the hour in which to repeat. Valid values are 0 to
59. The array MUST have at least one entry if included. 59. The array MUST have at least one entry if included.
This is the BYMINUTE part from iCalendar. This is the BYMINUTE part from iCalendar.
skipping to change at page 24, line 40 skipping to change at page 25, line 5
property. property.
This is the UNTIL part from iCalendar. This is the UNTIL part from iCalendar.
4.3.2.1. Interpreting recurrence rules 4.3.2.1. Interpreting recurrence rules
A recurrence rule specifies a set of date-times for recurring A recurrence rule specifies a set of date-times for recurring
calendar objects. A recurrence rule has the following semantics. calendar objects. A recurrence rule has the following semantics.
Note, wherever "year", "month" or "day of month" is used, this is Note, wherever "year", "month" or "day of month" is used, this is
within the calendar system given by the "rscale" property, which within the calendar system given by the "rscale" property, which
defaults to gregorian if omitted. defaults to "gregorian" if omitted.
1. A set of candidates is generated. This is every second within a 1. A set of candidates is generated. This is every second within a
period defined by the frequency property value: period defined by the frequency property value:
* "yearly": every second from midnight on the 1st day of a year * "yearly": every second from midnight on the 1st day of a year
(inclusive) to midnight the 1st day of the following year (inclusive) to midnight the 1st day of the following year
(exclusive). (exclusive).
If skip is not "omit", the calendar system has leap months and If skip is not "omit", the calendar system has leap months and
there is a byMonth property, generate candidates for the leap there is a byMonth property, generate candidates for the leap
skipping to change at page 26, line 33 skipping to change at page 26, line 45
last occurrence within that period. last occurrence within that period.
* byHour: the date-time has the given hour value. * byHour: the date-time has the given hour value.
* byMinute: the date-time has the given minute value. * byMinute: the date-time has the given minute value.
* bySecond: the date-time has the given second value. * bySecond: the date-time has the given second value.
If a skip property is defined and is not "omit", there may be If a skip property is defined and is not "omit", there may be
candidates that do not correspond to valid dates (e.g. 31st candidates that do not correspond to valid dates (e.g. 31st
February in the gregorian calendar). In this case, the February in the Gregorian calendar). In this case, the
properties MUST be considered in the order above and: properties MUST be considered in the order above and:
1. After applying the byMonth filter, if the candidate's month 1. After applying the byMonth filter, if the candidate's month
is invalid for the given year increment it (if skip is is invalid for the given year increment it (if skip is
"forward") or decrement it (if skip is "backward") until a "forward") or decrement it (if skip is "backward") until a
valid month is found, incrementing/decrementing the year as valid month is found, incrementing/decrementing the year as
well if you pass through the beginning/end of the year. This well if you pass through the beginning/end of the year. This
only applies to calendar systems with leap months. only applies to calendar systems with leap months.
2. After applying the byMonthDay filter, if the day of the month 2. After applying the byMonthDay filter, if the day of the month
skipping to change at page 29, line 14 skipping to change at page 29, line 26
recurrence id as well as the patched "start" date-time may occur recurrence id as well as the patched "start" date-time may occur
before the original JSCalendar object's "start" or "due" date. before the original JSCalendar object's "start" or "due" date.
A pointer in the PatchObject MUST be ignored if it starts with one of A pointer in the PatchObject MUST be ignored if it starts with one of
the following prefixes: the following prefixes:
o @type o @type
o method o method
o privacy
o prodId o prodId
o recurrenceId o recurrenceId
o recurrenceOverrides o recurrenceOverrides
o recurrenceRule o recurrenceRule
o relatedTo o relatedTo
skipping to change at page 34, line 44 skipping to change at page 35, line 13
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.
* "delegated": The invited participant has delegated their
attendance to another participant, as specified in the
delegatedTo property.
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 expectReply: "Boolean" (optional, default: false) o expectReply: "Boolean" (optional, default: false)
If true, the organizer is expecting the participant to notify them If true, the organizer is expecting the participant to notify them
of their participation status. of their participation status.
o scheduleAgent: "String" (optional, default: "server") o scheduleAgent: "String" (optional, default: "server")
Who is responsible for sending scheduling messages with this Who is responsible for sending scheduling messages with this
calendar object to the participant. calendar object to the 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:
* "server": The calendar server will send the scheduling * "server": The calendar server will send the scheduling
messages. messages.
* "accepted": 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 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.
skipping to change at page 36, line 28 skipping to change at page 36, line 49
This MUST be omitted if none (rather than an empty set). This MUST be omitted if none (rather than an empty set).
o linkIds: "String[Boolean]" (optional) o linkIds: "String[Boolean]" (optional)
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. This MUST be omitted if for each key in the set MUST be true. This MUST be omitted if
none (rather than an empty set). none (rather than an empty set).
o progress: "String" (optional). This is only allowed if the
Participant is part of a JSTask. It represents the progress of
the participant for this task, if known. This property MUST NOT
be set if the "participationStatus" of this participant is any
value other than "accepted". See Section 5.2.4 for allowed values
and semantics.
o progressUpdated: "UTCDateTime" (optional). Specifies the date-
time the progress property was last set on this participant. This
is only allowed if the Participant is part of a JSTask.
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
defined in this specification. If an implementation cannot determine defined in this specification. If an implementation cannot determine
skipping to change at page 43, line 43 skipping to change at page 44, line 18
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. statusUpdatedAt 5.2.4. progress
Type: "UTCDateTime" (optional).
Specifies the date/time the "status" property of either the task
overall (Section 5.2.6) or a specific participant (Section 5.2.5) was
last updated.
If the task is recurring and has future instances, a client may want
to keep track of the last status update timestamp of a specific task
recurrence, but leave other instances unchanged. One way to achieve
this is by overriding the statusUpdatedAt property in the task
"recurrenceOverrides" property. However, this could produce a long
list of timestamps for regularly recurring tasks. An alternative
approach is to split the JSTask into a current, single instance of
JSTask with this instance status update time and a future recurring
instance. See also Section 4.1.3 on splitting.
5.2.5. progress
In addition to the common properties of a Participant object
(Section 4.4.5), a Participant within a JSTask supports the following
property:
o progress: ParticipantProgress (optional). The progress of the
participant for this task, if known. This property MUST NOT be
set if the "participationStatus" of this participant is any other
value but "accepted".
A ParticipantProgress object has the following properties:
o @type: "String" (mandatory)
Specifies the type of this object. This MUST be
"ParticipantProgress".
o status: "String" (mandatory)
Describes the completion status of the participant's progress.
The value MUST be at most one of the following values, an IANA-
registered value, or a vendor-specific value:
* "completed": The participant completed this task.
* "in-process": The participant has started this task.
* "failed": The participant failed to complete this task.
o timestamp: "UTCDateTime" (mandatory)
Represents the last time the participant progress was updated.
5.2.6. status
Type: "String" (optional). Type: "String" (optional).
Defines the overall status of this task. If omitted, the default Defines the progress of this task. If omitted, the default progress
status (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 "status" property value of all participant o "completed": if the "progress" property value of all participants
progresses is "completed". is "completed".
o "failed": if at least one "status" property value of the o "failed": if at least one "progress" property value of a
participant progresses is "failed". participant is "failed".
o "in-process": if at least one "status" property value of the o "in-process": if at least one "progress" property value of a
participant progresses is "in-process". participant is "in-process".
o "needs-action": If none of the other criteria match. o "needs-action": If none of the other criteria match.
If set, it MUST be one of the following values, an IANA-registered If set, it MUST be one of the following values, an IANA-registered
value, or a vendor-specific value: value, or a vendor-specific value:
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 "completed": Indicates the task is completed. o "completed": Indicates the task is completed.
o "in-process": Indicates the task is in process. o "failed": Indicates the task failed.
o "cancelled": Indicates the task is cancelled. o "cancelled": Indicates the task was cancelled.
o "pending": Indicates the task has been created and accepted for 5.2.5. progressUpdated
processing, but not yet started.
o "failed": Indicates the task failed. Type: "UTCDateTime" (optional).
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
last updated.
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
task recurrence, but leave other instances unchanged. One way to
achieve this is by overriding the progressUpdated property in the
task "recurrenceOverrides" property. However, this could produce a
long list of timestamps for regularly recurring tasks. An
alternative approach is to split the JSTask into a current, single
instance of JSTask with this instance progress update time and a
future recurring instance. See also Section 4.1.3 on splitting.
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
skipping to change at page 46, line 4 skipping to change at page 45, line 35
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 locale
o prodId o prodId
o title o title
o updated o updated
o uid o uid
In addition, the following JSGroup-specific properties are supported: In addition, the following JSGroup-specific properties are supported:
5.3.1. entries 5.3.1. entries
Type: "String[JSTask|JSEvent]" (mandatory). Type: "String[JSTask|JSEvent]" (mandatory).
A collection of group members. This is represented as a map of the A collection of group members. This is represented as a map of the
"uid" property value to the JSCalendar object member having that uid. "uid" property value to the JSCalendar object member having that uid.
Implementations MUST ignore entries of unknown type. Implementations MUST ignore entries of unknown type.
skipping to change at page 48, line 10 skipping to change at page 47, line 22
6.3. Simple group 6.3. Simple group
This example illustrates a simple calendar object group that contains This example illustrates a simple calendar object group that contains
an event and a task. an event and a task.
{ {
"@type": "jsgroup", "@type": "jsgroup",
"uid": "2a358cee-6489-4f14-a57f-c104db4dc343", "uid": "2a358cee-6489-4f14-a57f-c104db4dc343",
"updated": "2018-01-15T18:00:00Z", "updated": "2018-01-15T18:00:00Z",
"name": "A simple group", "name": "A simple group",
"entries": [ "entries": {
{ "2a358cee-6489-4f14-a57f-c104db4dc2f1": {
"@type": "jsevent", "@type": "jsevent",
"uid": "2a358cee-6489-4f14-a57f-c104db4dc2f1", "uid": "2a358cee-6489-4f14-a57f-c104db4dc2f1",
"updated": "2018-01-15T18:00:00Z", "updated": "2018-01-15T18:00:00Z",
"title": "Some event", "title": "Some event",
"start": "2018-01-15T13:00:00", "start": "2018-01-15T13:00:00",
"timeZone": "America/New_York", "timeZone": "America/New_York",
"duration": "PT1H" "duration": "PT1H"
}, },
{ "2a358cee-6489-4f14-a57f-c104db4dc2f2": {
"@type": "jstask", "@type": "jstask",
"uid": "2a358cee-6489-4f14-a57f-c104db4dc2f2", "uid": "2a358cee-6489-4f14-a57f-c104db4dc2f2",
"updated": "2018-01-15T18:00:00Z", "updated": "2018-01-15T18:00:00Z",
"title": "Do something" "title": "Do something"
} }
] }
} }
6.4. All-day event 6.4. All-day event
This example illustrates an event for an international holiday. It This example illustrates an event for an international holiday. It
specifies an all-day event on April 1 that occurs every year since specifies an all-day event on April 1 that occurs every year since
the year 1900. the year 1900.
{ {
"...": "", "...": "",
skipping to change at page 59, line 16 skipping to change at page 58, line 16
o Change Controller: ("IETF" for Standards Track / BCP RFCs). o Change Controller: ("IETF" for Standards Track / BCP RFCs).
8.2.6. Initial Contents for the JSCalendar Properties Registry 8.2.6. Initial Contents for the JSCalendar Properties Registry
The following table lists the initial entries of the JSCalendar The following table lists the initial entries of the JSCalendar
Properties registry. All properties are for common-use. All RFC Properties registry. All properties are for common-use. All RFC
section references are for this document. The change controller for section references are for this document. The change controller for
all these properties is "IETF". all these properties is "IETF".
+--------------+----------------------------+--------------+--------+ +---------------+-----------------------------+------------+--------+
| Property | Property Type | Property | RFC Re | | Property Name | Property Type | Property | RFC Re |
| Name | | Context | ferenc | | | | Context | ferenc |
| | | | e | | | | | e |
+--------------+----------------------------+--------------+--------+ +---------------+-----------------------------+------------+--------+
| @type | String | JSEvent, | Sectio | | @type | String | JSEvent, | Sectio |
| | | JSTask, | n | | | | JSTask, | n |
| | | JSGroup, Abs | 4.1.1, | | | | JSGroup, A | 4.1.1, |
| | | oluteTrigger | Sectio | | | | bsoluteTri | Sectio |
| | | , Alert, | n | | | | gger, | n |
| | | Link, | 4.5.2, | | | | Alert, | 4.5.2, |
| | | Location, Of | Sectio | | | | Link, | Sectio |
| | | fsetTrigger, | n | | | | Location, | n |
| | | Participant, | 4.2.7, | | | | OffsetTrig | 4.2.7, |
| | | ParticipantP | Sectio | | | | ger, Parti | Sectio |
| | | rogress, Rec | n | | | | cipant, Re | n |
| | | urrenceRule, | 4.2.5, | | | | currenceRu | 4.2.5, |
| | | Relation, | Sectio | | | | le, | Sectio |
| | | TimeZone, Vi | n | | | | Relation, | n |
| | | rtualLocatio | 4.4.5, | | | | TimeZone, | 4.4.5, |
| | | n | Sectio | | | | VirtualLoc | Sectio |
| | | | n | | | | ation | n |
| | | | 5.2.5, | | | | | 4.3.2, |
| | | | Sectio | | | | | Sectio |
| | | | n | | | | | n |
| | | | 4.3.2, | | | | | 4.1.3, |
| | | | Sectio | | | | | Sectio |
| | | | n | | | | | n |
| | | | 4.1.3, | | | | | 4.7.2, |
| | | | Sectio | | | | | Sectio |
| | | | n | | | | | n |
| | | | 4.7.2, | | | | | 4.2.6 |
| | | | Sectio | | | | | |
| | | | n | | acknowledged | UTCDateTime | Alert | Sectio |
| | | | 4.2.6 | | | | | n |
| | | | | | | | | 4.5.2 |
| acknowledged | UTCDateTime | Alert | Sectio | | | | | |
| | | | n | | action | String | Alert | Sectio |
| | | | 4.5.2 | | | | | n |
| | | | | | | | | 4.5.2 |
| action | String | Alert | Sectio | | | | | |
| | | | n | | alerts | Id[Alert] | JSEvent, | Sectio |
| | | | 4.5.2 | | | | JSTask | n |
| | | | | | | | | 4.5.2 |
| alerts | Id[Alert] | JSEvent, | Sectio | | | | | |
| | | JSTask | n | | byDay | NDay[] | Recurrence | Sectio |
| | | | 4.5.2 | | | | Rule | n |
| | | | | | | | | 4.3.2 |
| categories | String[Boolean] | JSEvent, | Sectio | | | | | |
| | | JSTask, | n | | byHour | UnsignedInt[] | Recurrence | Sectio |
| | | JSGroup | 4.2.10 | | | | Rule | n |
| | | | | | | | | 4.3.2 |
| categories | String[Boolean] | Location | Sectio | | | | | |
| | | | n | | byMinute | UnsignedInt[] | Recurrence | Sectio |
| | | | 4.2.5 | | | | Rule | n |
| | | | | | | | | 4.3.2 |
| cid | String | Link | Sectio | | | | | |
| | | | n | | byMonth | String[] | Recurrence | Sectio |
| | | | 4.2.7 | | | | Rule | n |
| | | | | | | | | 4.3.2 |
| color | String | JSEvent, | Sectio | | | | | |
| | | JSTask, | n | | byMonthDay | Int[] | Recurrence | Sectio |
| | | JSGroup | 4.2.11 | | | | Rule | n |
| | | | | | | | | 4.3.2 |
| contentType | String | Link | Sectio | | | | | |
| | | | n | | bySecond | UnsignedInt[] | Recurrence | Sectio |
| | | | 4.2.7 | | | | Rule | n |
| | | | | | | | | 4.3.2 |
| coordinates | String | Location | Sectio | | | | | |
| | | | n | | bySetPosition | Int[] | Recurrence | Sectio |
| | | | 4.2.5 | | | | Rule | n |
| | | | | | | | | 4.3.2 |
| created | UTCDateTime | JSEvent, | Sectio | | | | | |
| | | JSTask, | n | | byWeekNo | Int[] | Recurrence | Sectio |
| | | JSGroup | 4.1.5 | | | | Rule | n |
| | | | | | | | | 4.3.2 |
| delegatedFro | String[Boolean] | Participant | Sectio | | | | | |
| m | | | n | | byYearDay | Int[] | Recurrence | Sectio |
| | | | 4.4.5 | | | | Rule | n |
| | | | | | | | | 4.3.2 |
| delegatedTo | String[Boolean] | Participant | Sectio | | | | | |
| | | | n | | categories | String[Boolean] | JSEvent, | Sectio |
| | | | 4.4.5 | | | | JSTask, | n |
| | | | | | | | JSGroup | 4.2.10 |
| description | String | JSEvent, | Sectio | | | | | |
| | | JSTask, | n | | cid | String | Link | Sectio |
| | | Location, Vi | 4.2.2, | | | | | n |
| | | rtualLocatio | Sectio | | | | | 4.2.7 |
| | | n | n | | | | | |
| | | | 4.2.5, | | color | String | JSEvent, | Sectio |
| | | | Sectio | | | | JSTask, | n |
| | | | n | | | | JSGroup | 4.2.11 |
| | | | 4.2.6 | | | | | |
| | | | | | contentType | String | Link | Sectio |
| descriptionC | String | JSEvent, | Sectio | | | | | n |
| ontentType | | JSTask | n | | | | | 4.2.7 |
| | | | 4.2.3 | | | | | |
| | | | | | coordinates | String | Location | Sectio |
| display | String | Link | Sectio | | | | | n |
| | | | n | | | | | 4.2.5 |
| | | | 4.2.7 | | | | | |
| | | | | | count | UnsignedInt | Recurrence | Sectio |
| due | LocalDateTime | JSTask | Sectio | | | | Rule | n |
| | | | n | | | | | 4.3.2 |
| | | | 5.2.1 | | | | | |
| | | | | | created | UTCDateTime | JSEvent, | Sectio |
| duration | Duration | JSEvent | Sectio | | | | JSTask, | n |
| | | | n | | | | JSGroup | 4.1.5 |
| | | | 5.1.2 | | | | | |
| | | | | | delegatedFrom | String[Boolean] | Participan | Sectio |
| email | String | Participant | Sectio | | | | t | n |
| | | | n | | | | | 4.4.5 |
| | | | 4.4.5 | | | | | |
| | | | | | delegatedTo | String[Boolean] | Participan | Sectio |
| entries | String[JSTask|JSEvent] | JSGroup | Sectio | | | | t | n |
| | | | n | | | | | 4.4.5 |
| | | | 5.3.1 | | | | | |
| | | | | | description | String | JSEvent, | Sectio |
| estimatedDur | Duration | JSTask | Sectio | | | | JSTask, | n |
| ation | | | n | | | | Location, | 4.2.2, |
| | | | 5.2.3 | | | | VirtualLoc | Sectio |
| | | | | | | | ation | n |
| excluded | Boolean | JSEvent, | Sectio | | | | | 4.2.5, |
| | | JSTask | n | | | | | Sectio |
| | | | 4.3.4 | | | | | n |
| | | | | | | | | 4.2.6 |
| expectReply | Boolean | Participant | Sectio | | | | | |
| | | | n | | descriptionCo | String | JSEvent, | Sectio |
| | | | 4.4.5 | | ntentType | | JSTask | n |
| | | | | | | | | 4.2.3 |
| freeBusyStat | String | JSEvent, | Sectio | | | | | |
| us | | JSTask | n | | display | String | Link | Sectio |
| | | | 4.4.2 | | | | | n |
| | | | | | | | | 4.2.7 |
| href | String | Link | Sectio | | | | | |
| | | | n | | due | LocalDateTime | JSTask | Sectio |
| | | | 4.2.7 | | | | | n |
| | | | | | | | | 5.2.1 |
| invitedBy | String | Participant | Sectio | | | | | |
| | | | n | | duration | Duration | JSEvent | Sectio |
| | | | 4.4.5 | | | | | n |
| | | | | | | | | 5.1.2 |
| keywords | String[Boolean] | JSEvent, | Sectio | | | | | |
| | | JSTask, | n | | email | String | Participan | Sectio |
| | | JSGroup | 4.2.9 | | | | t | n |
| | | | | | | | | 4.4.5 |
| kind | String | Participant | Sectio | | | | | |
| | | | n | | entries | String[JSTask|JSEvent] | JSGroup | Sectio |
| | | | 4.4.5 | | | | | n |
| | | | | | | | | 5.3.1 |
| language | String | Participant | Sectio | | | | | |
| | | | n | | estimatedDura | Duration | JSTask | Sectio |
| | | | 4.4.5 | | tion | | | n |
| | | | | | | | | 5.2.3 |
| linkIds | Id[Boolean] | Location, | Sectio | | | | | |
| | | Participant | n | | excluded | Boolean | JSEvent, | Sectio |
| | | | 4.2.5, | | | | JSTask | n |
| | | | Sectio | | | | | 4.3.4 |
| | | | n | | | | | |
| | | | 4.4.5 | | expectReply | Boolean | Participan | Sectio |
| | | | | | | | t | n |
| localization | String[PatchObject] | JSEvent, | Sectio | | | | | 4.4.5 |
| s | | JSTask | n | | | | | |
| | | | 4.6.1 | | firstDayOfWee | String | Recurrence | Sectio |
| | | | | | k | | Rule | n |
| locationId | String | Participant | Sectio | | | | | 4.3.2 |
| | | | n | | | | | |
| | | | 4.4.5 | | freeBusyStatu | String | JSEvent, | Sectio |
| | | | | | s | | JSTask | n |
| locations | Id[Location] | JSEvent, | Sectio | | | | | 4.4.2 |
| | | JSTask | n | | | | | |
| | | | 4.2.5 | | frequency | String | Recurrence | Sectio |
| | | | | | | | Rule | n |
| memberOf | String[Boolean] | Participant | Sectio | | | | | 4.3.2 |
| | | | n | | | | | |
| | | | 4.4.5 | | href | String | Link | Sectio |
| | | | | | | | | n |
| method | String | JSEvent, | Sectio | | | | | 4.2.7 |
| | | JSTask | n | | | | | |
| | | | 4.1.8 | | interval | UnsignedInt | Recurrence | Sectio |
| | | | | | | | Rule | n |
| name | String | Location, | Sectio | | | | | 4.3.2 |
| | | Participant | n | | | | | |
| | | | 4.2.5, | | invitedBy | String | Participan | Sectio |
| | | | Sectio | | | | t | n |
| | | | n | | | | | 4.4.5 |
| | | | 4.4.5 | | | | | |
| | | | | | keywords | String[Boolean] | JSEvent, | Sectio |
| offset | SignedDuration | OffsetTrigge | Sectio | | | | JSTask, | n |
| | | r | n | | | | JSGroup | 4.2.9 |
| | | | 4.5.2 | | | | | |
| | | | | | kind | String | Participan | Sectio |
| participants | Id[Participant] | JSEvent, | Sectio | | | | t | n |
| | | JSTask | n | | | | | 4.4.5 |
| | | | 4.4.5 | | | | | |
| | | | | | language | String | Participan | Sectio |
| participatio | String | Participant | Sectio | | | | t | n |
| nComment | | | n | | | | | 4.4.5 |
| | | | 4.4.5 | | | | | |
| | | | | | linkIds | Id[Boolean] | Location, | Sectio |
| participatio | String | Participant | Sectio | | | | Participan | n |
| nStatus | | | n | | | | t | 4.2.5, |
| | | | 4.4.5 | | | | | Sectio |
| | | | | | | | | n |
| priority | Int | JSEvent, | Sectio | | | | | 4.4.5 |
| | | JSTask | n | | | | | |
| | | | 4.4.1 | | links | Id[Link] | JSGroup, | Sectio |
| | | | | | | | JSEvent, | n |
| privacy | String | JSEvent, | Sectio | | | | JSTask | 4.2.7 |
| | | JSTask | n | | | | | |
| | | | 4.4.3 | | locale | String | JSGroup, | Sectio |
| | | | | | | | JSEvent, | n |
| prodId | String | JSEvent, | Sectio | | | | JSTask | 4.2.7 |
| | | JSTask, | n | | | | | |
| | | JSGroup | 4.1.4 | | localizations | String[PatchObject] | JSEvent, | Sectio |
| | | | | | | | JSTask | n |
| recurrenceId | LocalDateTime | JSEvent, | Sectio | | | | | 4.6.1 |
| | | JSTask | n | | | | | |
| | | | 4.3.1 | | locationId | String | Participan | Sectio |
| | | | | | | | t | n |
| recurrenceOv | LocalDateTime[PatchObject] | JSEvent, | Sectio | | | | | 4.4.5 |
| errides | | JSTask | n | | | | | |
| | | | 4.3.3 | | locations | Id[Location] | JSEvent, | Sectio |
| | | | | | | | JSTask | n |
| recurrenceRu | RecurrenceRule | JSEvent, | Sectio | | | | | 4.2.5 |
| le | | JSTask | n | | | | | |
| | | | 4.3.2 | | locationTypes | String[Boolean] | Location | Sectio |
| | | | | | | | | n |
| rel | String | Link | Sectio | | | | | 4.2.5 |
| | | | n | | | | | |
| | | | 4.2.7 | | memberOf | String[Boolean] | Participan | Sectio |
| | | | | | | | t | n |
| relatedTo | String[Relation] | JSEvent, | Sectio | | | | | 4.4.5 |
| | | JSTask, | n | | | | | |
| | | Alert | 4.1.3, | | method | String | JSEvent, | Sectio |
| | | | Sectio | | | | JSTask | n |
| | | | n | | | | | 4.1.8 |
| | | | 4.5.2 | | | | | |
| | | | | | name | String | Location, | Sectio |
| relation | String[Boolean] | Relation | Sectio | | | | VirtualLoc | n |
| | | | n | | | | ation, Par | 4.2.5, |
| | | | 1.4.10 | | | | ticipant | Sectio |
| | | | | | | | | n |
| relativeTo | String | OffsetTrigge | Sectio | | | | | 4.2.6, |
| | | r, Location | n | | | | | Sectio |
| | | | 4.5.2, | | | | | n |
| | | | Sectio | | | | | 4.4.5 |
| | | | n | | | | | |
| | | | 4.2.5 | | offset | SignedDuration | OffsetTrig | Sectio |
| | | | | | | | ger | n |
| replyTo | String[String] | JSEvent, | Sectio | | | | | 4.5.2 |
| | | JSTask | n | | | | | |
| | | | 4.4.4 | | participants | Id[Participant] | JSEvent, | Sectio |
| | | | | | | | JSTask | n |
| roles | String[Boolean] | Participant | Sectio | | | | | 4.4.5 |
| | | | n | | | | | |
| | | | 4.4.5 | | participation | String | Participan | Sectio |
| | | | | | Comment | | t | n |
| scheduleAgen | String | Participant | Sectio | | | | | 4.4.5 |
| t | | | n | | | | | |
| | | | 4.4.5 | | participation | String | Participan | Sectio |
| | | | | | Status | | t | n |
| scheduleSequ | UnsignedInt | Participant | Sectio | | | | | 4.4.5 |
| ence | | | n | | | | | |
| | | | 4.4.5 | | priority | Int | JSEvent, | Sectio |
| | | | | | | | JSTask | n |
| scheduleUpda | UTCDateTime | Participant | Sectio | | | | | 4.4.1 |
| ted | | | n | | | | | |
| | | | 4.4.5 | | privacy | String | JSEvent, | Sectio |
| | | | | | | | JSTask | n |
| sendTo | String[String] | Participant | Sectio | | | | | 4.4.3 |
| | | | n | | | | | |
| | | | 4.4.5 | | prodId | String | JSEvent, | Sectio |
| | | | | | | | JSTask, | n |
| sequence | UnsignedInt | JSEvent, | Sectio | | | | JSGroup | 4.1.4 |
| | | JSTask | n | | | | | |
| | | | 4.1.7 | | progress | String | JSTask, Pa | Sectio |
| | | | | | | | rticipant | n |
| showWithoutT | Boolean | JSEvent, | Sectio | | | | | 5.2.4 |
| ime | | JSTask | n | | | | | |
| | | | 4.2.4 | | progressUpdat | UTCDateTime | JSTask, Pa | Sectio |
| | | | | | ed | | rticipant | n |
| size | UnsignedInt | Link | Sectio | | | | | 5.2.5 |
| | | | n | | | | | |
| | | | 4.2.7 | | recurrenceId | LocalDateTime | JSEvent, | Sectio |
| | | | | | | | JSTask | n |
| start | LocalDateTime | JSEvent, | Sectio | | | | | 4.3.1 |
| | | JSTask | n | | | | | |
| | | | 5.1.1, | | recurrenceOve | LocalDateTime[PatchObject] | JSEvent, | Sectio |
| | | | Sectio | | rrides | | JSTask | n |
| | | | n | | | | | 4.3.3 |
| | | | 5.2.2 | | | | | |
| | | | | | recurrenceRul | RecurrenceRule | JSEvent, | Sectio |
| status | String | ParticipantP | Sectio | | e | | JSTask | n |
| | | rogress | n | | | | | 4.3.2 |
| | | | 5.2.5 | | | | | |
| | | | | | rel | String | Link | Sectio |
| statusUpdate | UTCDateTime | JSTask | Sectio | | | | | n |
| dAt | | | n | | | | | 4.2.7 |
| | | | 5.2.4 | | | | | |
| | | | | | relatedTo | String[Relation] | JSEvent, | Sectio |
| source | String | JSGroup | Sectio | | | | JSTask, | n |
| | | | n | | | | Alert | 4.1.3, |
| | | | 5.3.2 | | | | | Sectio |
| | | | | | | | | n |
| status | String | JSEvent, | Sectio | | | | | 4.5.2 |
| | | JSTask | n | | | | | |
| | | | 5.1.3, | | relation | String[Boolean] | Relation | Sectio |
| | | | Sectio | | | | | n |
| | | | n | | | | | 1.4.10 |
| | | | 5.2.6 | | | | | |
| | | | | | relativeTo | String | OffsetTrig | Sectio |
| timestamp | UTCDateTime | ParticipantP | Sectio | | | | ger, | n |
| | | rogress | n | | | | Location | 4.5.2, |
| | | | 5.2.5 | | | | | Sectio |
| | | | | | | | | n |
| timeZone | String|null | JSEvent, | Sectio | | | | | 4.2.5 |
| | | JSTask, | n | | | | | |
| | | Location | 4.7.1, | | replyTo | String[String] | JSEvent, | Sectio |
| | | | Sectio | | | | JSTask | n |
| | | | n | | | | | 4.4.4 |
| | | | 4.2.5 | | | | | |
| | | | | | roles | String[Boolean] | Participan | Sectio |
| timeZones | String[TimeZone] | JSEvent, | Sectio | | | | t | n |
| | | JSTask | n | | | | | 4.4.5 |
| | | | 4.7.2 | | | | | |
| | | | | | rscale | String | Recurrence | Sectio |
| title | String | JSEvent, | Sectio | | | | Rule | n |
| | | JSTask, | n | | | | | 4.3.2 |
| | | JSGroup, | 4.2.1 | | | | | |
| | | Link | | | scheduleAgent | String | Participan | Sectio |
| | | | | | | | t | n |
| trigger | OffsetTrigger|AbsoluteTrig | Alert | Sectio | | | | | 4.4.5 |
| | ger|UnknownTrigger | | n | | | | | |
| | | | 4.5.2 | | scheduleSeque | UnsignedInt | Participan | Sectio |
| | | | | | nce | | t | n |
| uid | String | JSEvent, | Sectio | | | | | 4.4.5 |
| | | JSTask, | n | | | | | |
| | | JSGroup | 4.1.2 | | scheduleUpdat | UTCDateTime | Participan | Sectio |
| | | | | | ed | | t | n |
| updated | UTCDateTime | JSEvent, | Sectio | | | | | 4.4.5 |
| | | JSTask, | n | | | | | |
| | | JSGroup | 4.1.6 | | sendTo | String[String] | Participan | Sectio |
| | | | | | | | t | n |
| useDefaultAl | Boolean | JSEvent, | Sectio | | | | | 4.4.5 |
| erts | | JSTask | n | | | | | |
| | | | 4.5.1 | | sequence | UnsignedInt | JSEvent, | Sectio |
| | | | | | | | JSTask | n |
| virtualLocat | Id[VirtualLocation] | JSEvent, | Sectio | | | | | 4.1.7 |
| ions | | JSTask | n | | | | | |
| | | | 4.2.6 | | showWithoutTi | Boolean | JSEvent, | Sectio |
| | | | | | me | | JSTask | n |
| when | UTCDateTime | AbsoluteTrig | Sectio | | | | | 4.2.4 |
| | | ger | n | | | | | |
| | | | 4.5.2 | | size | UnsignedInt | Link | Sectio |
+--------------+----------------------------+--------------+--------+ | | | | n |
| | | | 4.2.7 |
| | | | |
| skip | String | Recurrence | Sectio |
| | | Rule | n |
| | | | 4.3.2 |
| | | | |
| source | String | JSGroup | Sectio |
| | | | n |
| | | | 5.3.2 |
| | | | |
| start | LocalDateTime | JSEvent, | Sectio |
| | | JSTask | n |
| | | | 5.1.1, |
| | | | Sectio |
| | | | n |
| | | | 5.2.2 |
| | | | |
| status | String | JSEvent | Sectio |
| | | | n |
| | | | 5.1.3 |
| | | | |
| timeZone | String|null | JSEvent, | Sectio |
| | | JSTask, | n |
| | | Location | 4.7.1, |
| | | | Sectio |
| | | | n |
| | | | 4.2.5 |
| | | | |
| timeZones | String[TimeZone] | JSEvent, | Sectio |
| | | JSTask | n |
| | | | 4.7.2 |
| | | | |
| title | String | JSEvent, | Sectio |
| | | JSTask, | n |
| | | JSGroup, | 4.2.1 |
| | | Link | |
| | | | |
| trigger | OffsetTrigger|AbsoluteTrigg | Alert | Sectio |
| | er|UnknownTrigger | | n |
| | | | 4.5.2 |
| | | | |
| uid | String | JSEvent, | Sectio |
| | | JSTask, | n |
| | | JSGroup | 4.1.2 |
| | | | |
| until | LocalDateTime | Recurrence | Sectio |
| | | Rule | n |
| | | | 4.3.2 |
| | | | |
| updated | UTCDateTime | JSEvent, | Sectio |
| | | JSTask, | n |
| | | JSGroup | 4.1.6 |
| | | | |
| uri | String | VirtualLoc | Sectio |
| | | ation | n |
| | | | 4.2.6 |
| | | | |
| useDefaultAle | Boolean | JSEvent, | Sectio |
| rts | | JSTask | n |
| | | | 4.5.1 |
| | | | |
| virtualLocati | Id[VirtualLocation] | JSEvent, | Sectio |
| ons | | JSTask | n |
| | | | 4.2.6 |
| | | | |
| when | UTCDateTime | AbsoluteTr | Sectio |
| | | igger | n |
| | | | 4.5.2 |
+---------------+-----------------------------+------------+--------+
Table 1 Table 1
8.3. Creation of "JSCalendar Types" Registry 8.3. Creation of "JSCalendar Types" Registry
The IANA will create the "JSCalendar Types" registry to avoid name The IANA will create the "JSCalendar Types" registry to avoid name
collisions and provide a complete reference for all data types used collisions and provide a complete reference for all data types used
for JSCalendar property values. The registration process is the same for JSCalendar property values. The registration process is the same
as for the JSCalendar Properties registry, as defined in Section 8.2. as for the JSCalendar Properties registry, as defined in Section 8.2.
skipping to change at page 67, line 9 skipping to change at page 67, line 29
o Type Name: The name of the type. o Type Name: The name of the type.
o RFC Reference: The RFC and section where the Type is specified o RFC Reference: The RFC and section where the Type is specified
(may be omitted for "reserved" type names). (may be omitted for "reserved" type names).
o Intended Use: Common, reserved, or obsolete. o Intended Use: Common, reserved, or obsolete.
o Change Controller: ("IETF" for Standards Track / BCP RFCs). o Change Controller: ("IETF" for Standards Track / BCP RFCs).
8.3.2. Initial Contents for the JSCalendar Properties Registry 8.3.2. Initial Contents for the JSCalendar Types Registry
The following table lists the initial entries of the JSCalendar Types The following table lists the initial entries of the JSCalendar Types
registry. All properties are for common-use. All RFC section registry. All properties are for common-use. All RFC section
references are for this document. The change controller for all references are for this document. The change controller for all
these properties is "IETF". these properties is "IETF".
+---------------------+----------------+ +-----------------+----------------+
| Type Name | RFC Reference | | Type Name | RFC Reference |
+---------------------+----------------+ +-----------------+----------------+
| Alert | Section 4.5.2 | | Alert | Section 4.5.2 |
| | | | | |
| Boolean | Section 1.3 | | Boolean | Section 1.3 |
| | | | | |
| Duration | Section 1.4.5 | | Duration | Section 1.4.5 |
| | | | | |
| Id | Section 1.4.7 | | Id | Section 1.4.7 |
| | | | | |
| Int | Section 1.4.1 | | Int | Section 1.4.1 |
| | | | | |
| LocalDateTime | Section 1.4.4 | | LocalDateTime | Section 1.4.4 |
| | | | | |
| Link | Section 4.2.7 | | Link | Section 4.2.7 |
| | | | | |
| Location | Section 4.2.5 | | Location | Section 4.2.5 |
| | | | | |
| Number | Section 1.3 | | Number | Section 1.3 |
| | | | | |
| Participant | Section 4.4.5 | | Participant | Section 4.4.5 |
| | | | | |
| ParticipantProgress | Section 5.2.5 | | PatchObject | Section 1.4.8 |
| | | | | |
| PatchObject | Section 1.4.8 | | RecurrenceRule | Section 4.3.2 |
| | | | | |
| RecurrenceRule | Section 4.3.2 | | Relation | Section 1.4.10 |
| | | | | |
| Relation | Section 1.4.10 | | SignedDuration | Section 1.4.6 |
| | | | | |
| SignedDuration | Section 1.4.6 | | String | Section 1.3 |
| | | | | |
| String | Section 1.3 | | TimeZone | Section 4.7.2 |
| | | | | |
| TimeZone | Section 4.7.2 | | TimeZoneRule | Section 4.7.2 |
| | | | | |
| TimeZoneRule | Section 4.7.2 | | UnsignedInt | Section 1.4.2 |
| | | | | |
| UnsignedInt | Section 1.4.2 | | UTCDateTime | Section 1.4.3 |
| | | | | |
| UTCDateTime | Section 1.4.3 | | VirtualLocation | Section 4.2.6 |
| | | +-----------------+----------------+
| VirtualLocation | Section 4.2.6 |
+---------------------+----------------+
Table 2 Table 2
8.4. Creation of "JSCalendar Enum Values" Registry 8.4. Creation of "JSCalendar Enum Values" Registry
The IANA will create the "JSCalendar Enum Values" registry to allow The IANA will create the "JSCalendar Enum Values" registry to allow
interoperable extension of semantics for properties with enumerable interoperable extension of semantics for properties with enumerable
values. Each such property will have a subregistry of allowed values. Each such property will have a subregistry of allowed
values. The registration process for creating a new subregistry is values. The registration process for creating a new subregistry is
the same as for the JSCalendar Properties registry. The registration the same as for the JSCalendar Properties registry. The registration
skipping to change at page 72, line 14 skipping to change at page 72, line 14
+--------------+---------------+ +--------------+---------------+
| 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 |
| | |
| delegated | Section 4.4.5 |
+--------------+---------------+ +--------------+---------------+
Table 7 Table 7
------------------------------------------------------------ ------------------------------------------------------------
Property Name: privacy Property Name: privacy
Property Context: JSEvent, JSTask Property Context: JSEvent, JSTask
skipping to change at page 72, line 42 skipping to change at page 72, line 44
| | | | | |
| secret | Section 4.4.3 | | secret | Section 4.4.3 |
+------------+---------------+ +------------+---------------+
Table 8 Table 8
------------------------------------------------------------ ------------------------------------------------------------
Property Name: progress Property Name: progress
Property Context: ParticipantProgress Property Context: JSTask, Participant
Change Controller: IETF Change Controller: IETF
+------------+---------------+ +--------------+---------------+
| Enum Value | Description | | Enum Value | Description |
+------------+---------------+ +--------------+---------------+
| completed | Section 5.2.5 | | needs-action | Section 5.2.4 |
| | | | | |
| in-process | Section 5.2.5 | | in-process | Section 5.2.4 |
| | | | | |
| failed | Section 5.2.5 | | completed | Section 5.2.4 |
+------------+---------------+ | | |
| failed | Section 5.2.4 |
| | |
| cancelled | Section 5.2.4 |
+--------------+---------------+
Table 9 Table 9
------------------------------------------------------------ ------------------------------------------------------------
Property Name: relation Property Name: relation
Property Context: Relation Property Context: Relation
Change Controller: IETF Change Controller: IETF
skipping to change at page 75, line 36 skipping to change at page 75, line 36
+------------+---------------+ +------------+---------------+
| confirmed | Section 5.1.3 | | confirmed | Section 5.1.3 |
| | | | | |
| cancelled | Section 5.1.3 | | cancelled | Section 5.1.3 |
| | | | | |
| tentative | Section 5.1.3 | | tentative | Section 5.1.3 |
+------------+---------------+ +------------+---------------+
Table 14 Table 14
------------------------------------------------------------
Property Name: status
Property Context: JSTask
Change Controller: IETF
+------------+---------------+
| Enum Value | Description |
+------------+---------------+
| completed | Section 5.2.6 |
| | |
| failed | Section 5.2.6 |
| | |
| in-process | Section 5.2.6 |
| | |
| cancelled | Section 5.2.6 |
| | |
| pending | Section 5.2.6 |
| | |
| failed | Section 5.2.6 |
+------------+---------------+
Table 15
9. Acknowledgments 9. Acknowledgments
The authors would like to thank the members of CalConnect for their The authors would like to thank the members of CalConnect for their
valuable contributions. This specification originated from the work valuable contributions. This specification originated from the work
of the API technical committee of CalConnect, the Calendaring and of the API technical committee of CalConnect, the Calendaring and
Scheduling Consortium. Scheduling Consortium.
10. References 10. References
10.1. Normative References 10.1. Normative References
 End of changes. 55 change blocks. 
571 lines changed or deleted 611 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/