draft-ietf-calext-jscalendar-21.txt   draft-ietf-calext-jscalendar-22.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 30, 2020 October 28, 2019 Expires: June 7, 2020 December 05, 2019
JSCalendar: A JSON representation of calendar data JSCalendar: A JSON representation of calendar data
draft-ietf-calext-jscalendar-21 draft-ietf-calext-jscalendar-22
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 30, 2020. This Internet-Draft will expire on June 7, 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 14 skipping to change at page 2, line 14
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Motivation and Relation to iCalendar and jCal . . . . . . 5 1.1. Motivation and Relation to iCalendar and jCal . . . . . . 5
1.2. Notational Conventions . . . . . . . . . . . . . . . . . 6 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 6
1.3. Type Signatures . . . . . . . . . . . . . . . . . . . . . 6 1.3. Type Signatures . . . . . . . . . . . . . . . . . . . . . 6
1.4. Data Types . . . . . . . . . . . . . . . . . . . . . . . 7 1.4. Data Types . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.1. Int . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.1. Int . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2. UnsignedInt . . . . . . . . . . . . . . . . . . . . . 7 1.4.2. UnsignedInt . . . . . . . . . . . . . . . . . . . . . 7
1.4.3. UTCDateTime . . . . . . . . . . . . . . . . . . . . . 7 1.4.3. UTCDateTime . . . . . . . . . . . . . . . . . . . . . 7
1.4.4. LocalDateTime . . . . . . . . . . . . . . . . . . . . 7 1.4.4. LocalDateTime . . . . . . . . . . . . . . . . . . . . 7
1.4.5. Duration . . . . . . . . . . . . . . . . . . . . . . 7 1.4.5. Duration . . . . . . . . . . . . . . . . . . . . . . 7
1.4.6. SignedDuration . . . . . . . . . . . . . . . . . . . 8 1.4.6. SignedDuration . . . . . . . . . . . . . . . . . . . 8
1.4.7. Id . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.7. Id . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.8. PatchObject . . . . . . . . . . . . . . . . . . . . . 9 1.4.8. PatchObject . . . . . . . . . . . . . . . . . . . . . 9
1.4.9. Time Zones . . . . . . . . . . . . . . . . . . . . . 9 1.4.9. Time Zones . . . . . . . . . . . . . . . . . . . . . 9
1.4.10. Relation . . . . . . . . . . . . . . . . . . . . . . 9 1.4.10. Relation . . . . . . . . . . . . . . . . . . . . . . 9
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 . . . . . . . . . . . . . . . . . . . . . . . . 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. recurrenceRules . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . 30 4.4. Sharing and Scheduling Properties . . . . . . . . . . . . 30
4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 30 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 . . . . . . . . . . . . . . . . . . . . . . . 32 4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 32
4.4.5. participants . . . . . . . . . . . . . . . . . . . . 32 4.4.5. participants . . . . . . . . . . . . . . . . . . . . 32
4.5. Alerts Properties . . . . . . . . . . . . . . . . . . . . 37 4.5. Alerts Properties . . . . . . . . . . . . . . . . . . . . 37
4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 37 4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 37
skipping to change at page 4, line 16 skipping to change at page 4, line 16
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54
8.1. Media Type Registration . . . . . . . . . . . . . . . . . 54 8.1. Media Type Registration . . . . . . . . . . . . . . . . . 54
8.2. Creation of "JSCalendar Properties" Registry . . . . . . 55 8.2. Creation of "JSCalendar Properties" Registry . . . . . . 55
8.2.1. Preliminary Community Review . . . . . . . . . . . . 56 8.2.1. Preliminary Community Review . . . . . . . . . . . . 56
8.2.2. Submit Request to IANA . . . . . . . . . . . . . . . 56 8.2.2. Submit Request to IANA . . . . . . . . . . . . . . . 56
8.2.3. Designated Expert Review . . . . . . . . . . . . . . 56 8.2.3. Designated Expert Review . . . . . . . . . . . . . . 56
8.2.4. Change Procedures . . . . . . . . . . . . . . . . . . 57 8.2.4. Change Procedures . . . . . . . . . . . . . . . . . . 57
8.2.5. JMAP Properties Registry Template . . . . . . . . . . 57 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 . . . . . . . . . . . . . . . . . . . . . . 58 Registry . . . . . . . . . . . . . . . . . . . . . . 58
8.3. Creation of "JSCalendar Types" Registry . . . . . . . . . 67 8.3. Creation of "JSCalendar Types" Registry . . . . . . . . . 65
8.3.1. JMAP Types Registry Template . . . . . . . . . . . . 67 8.3.1. JMAP Types Registry Template . . . . . . . . . . . . 65
8.3.2. Initial Contents for the JSCalendar Types Registry . 67 8.3.2. Initial Contents for the JSCalendar Types Registry . 65
8.4. Creation of "JSCalendar Enum Values" Registry . . . . . . 69 8.4. Creation of "JSCalendar Enum Values" Registry . . . . . . 67
8.4.1. JMAP Enum Subregistry Creation Template . . . . . . . 69 8.4.1. JMAP Enum Subregistry Creation Template . . . . . . . 67
8.4.2. JMAP Enum Subregistry Creation Template . . . . . . . 69 8.4.2. JMAP Enum Subregistry Template . . . . . . . . . . . 67
8.4.3. Initial Contents for the JSCalendar Enum Registry . . 69 8.4.3. Initial Contents for the JSCalendar Enum Registry . . 68
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 75 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 72
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 75 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 72
10.1. Normative References . . . . . . . . . . . . . . . . . . 75 10.1. Normative References . . . . . . . . . . . . . . . . . . 72
10.2. Informative References . . . . . . . . . . . . . . . . . 78 10.2. Informative References . . . . . . . . . . . . . . . . . 75
10.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 75
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 9, line 41 skipping to change at page 9, line 41
o Anything else: The value to set for this property (this may be a o Anything else: The value to set for this property (this may be a
replacement or addition to the object being patched). replacement or addition to the object being patched).
Implementations MUST reject a PatchObject if any of its patches are Implementations MUST reject a PatchObject if any of its patches are
invalid. invalid.
1.4.9. Time Zones 1.4.9. Time Zones
By default, time zones in JSCalendar are identified by their name in By default, time zones in JSCalendar are identified by their name in
the IANA Time Zone Database [1], and the zone rules of the respective the IANA Time Zone Database [TZDB], and the zone rules of the
zone record apply. respective zone record apply.
Implementations MAY embed the definition of custom time zones in the Implementations MAY embed the definition of custom time zones in the
"timeZones" property (see Section 4.7.2). "timeZones" property (see Section 4.7.2).
1.4.10. Relation 1.4.10. Relation
A Relation object defines the relation to other objects, using a A Relation object defines the relation to other objects, using a
possibly empty set of relation types. The object that defines this possibly empty set of relation types. The object that defines this
relation is the linking object, the other object is the linked relation is the linking object, the other object is the linked
object. The Relation object has the following property: object. The Relation object has the following property:
skipping to change at page 18, line 32 skipping to change at page 18, line 32
The content-type [RFC6838] of the resource, if known. The content-type [RFC6838] of the resource, if known.
o size: "UnsignedInt" (optional) o size: "UnsignedInt" (optional)
The size, in octets, of the resource when fully decoded (i.e. the The size, in octets, of the resource when fully decoded (i.e. the
number of octets in the file the user would download), if known. number of octets in the file the user would download), if known.
o rel: "String" (optional) o rel: "String" (optional)
Identifies the relation of the linked resource to the object. If Identifies the relation of the linked resource to the object. If
set, the value MUST be a registered relation type (see [RFC8288] set, the value MUST be a relation type from the IANA registry
and IANA Link Relations [2]). [LINKRELS], as established in [RFC8288].
Links with a rel of "enclosure" SHOULD be considered by the client Links with a rel of "enclosure" SHOULD be considered by the client
as attachments for download. as attachments for download.
Links with a rel of "describedby" SHOULD be considered by the Links with a rel of "describedby" SHOULD be considered by the
client to be an alternate representation of the description. client to be an alternate representation of the description.
Links with a rel of "icon" SHOULD be considered by the client to Links with a rel of "icon" SHOULD be considered by the client to
be an image that it MAY use when presenting the calendar data to a be an image that it MAY use when presenting the calendar data to a
user. The "display" property MAY be set to indicate the purpose user. The "display" property MAY be set to indicate the purpose
skipping to change at page 19, line 51 skipping to change at page 19, line 51
In contrast to keywords, categories typically are structured. For In contrast to keywords, categories typically are structured. For
example, a vendor owning the domain "example.com" might define the example, a vendor owning the domain "example.com" might define the
categories "http://example.com/categories/sports/american-football"" categories "http://example.com/categories/sports/american-football""
and "http://example.com/categories/music/r-b". and "http://example.com/categories/music/r-b".
4.2.11. color 4.2.11. color
Type: "String" (optional). Type: "String" (optional).
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 case-insensitive color name taken from the CSS3 set of value is a case-insensitive color name taken from the set of names
names, defined in Section 4.3 of W3C.REC-css3-color-20110607 [3] or a defined in Section 4.3 of CSS Color Module Level 3 [COLORS], or an
CSS3 RGB color hex value. RGB value in hexadecimal notation, as defined in Section 4.2.1 of CSS
Color Module Level 3.
4.3. Recurrence Properties 4.3. Recurrence Properties
Some events and tasks occur at regular, or indeed irregular, Some events and tasks occur at regular, or indeed irregular,
intervals. Rather than having to copy the data for every occurrence, intervals. Rather than having to copy the data for every occurrence,
you can instead have a master event with a recurrence rule generating you can instead have a master event with a recurrence rule generating
the occurrences, and/or overrides that add extra dates or exceptions the occurrences, and/or overrides that add extra dates or exceptions
to the rule. to the rule.
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 "recurrenceRule" 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 "recurrenceRule" of The value is a date-time either produced by the "recurrenceRules" of
the master event, or added as a key to the "recurrenceOverrides" the master event, or added as a key to the "recurrenceOverrides"
property of the master event. property of the master event.
4.3.2. recurrenceRule 4.3.2. recurrenceRules
Type: "RecurrenceRule" (optional). Type: "RecurrenceRule[]" (optional).
Defines a recurrence rule (repeating pattern) for recurring calendar Defines a set of recurrence rules (repeating patterns) for recurring
objects. calendar objects.
A JSEvent recurs by applying the recurrence rule to the "start" date- A JSEvent recurs by applying the recurrence rules to the "start"
time. date-time.
A JSTask recurs by applying the recurrence rule to the "start" date- A JSTask recurs by applying the recurrence rules to the "start" date-
time, if defined, otherwise it recurs by the "due" date-time, if time, if defined, otherwise it recurs by the "due" date-time, if
defined. If the task defines neither a "start" nor "due" date-time, defined. If the task defines neither a "start" nor "due" date-time,
its "recurrenceRule" property value MUST be null. its "recurrenceRules" property value MUST be null.
If multiple recurrence rules are given, each rule is to be applied
and then the union of the results used, ignoring any duplicates.
A RecurrenceRule object is a JSON object mapping of a RECUR value A RecurrenceRule object is a JSON object mapping of a RECUR value
type in iCalendar [RFC5545] [RFC7529] and has the same semantics. It type in iCalendar [RFC5545] [RFC7529] and has the same semantics. It
has the following properties: has the following properties:
o @type: "String" (mandatory) o @type: "String" (mandatory)
Specifies the type of this object. This MUST be "RecurrenceRule". Specifies the type of this object. This MUST be "RecurrenceRule".
o frequency: "String" (mandatory) o frequency: "String" (mandatory)
skipping to change at page 29, line 34 skipping to change at page 29, line 34
o method o method
o privacy o privacy
o prodId o prodId
o recurrenceId o recurrenceId
o recurrenceOverrides o recurrenceOverrides
o recurrenceRule o recurrenceRules
o relatedTo o relatedTo
o replyTo o replyTo
o uid o uid
4.3.4. excluded 4.3.4. excluded
Type: "Boolean" (optional, default: false). Type: "Boolean" (optional, default: false).
skipping to change at page 40, line 6 skipping to change at page 40, line 6
calendar object. In addition, the "locale" property of the patched calendar object. In addition, the "locale" property of the patched
object is set to the language tag. All pointers for patches MUST end object is set to the language tag. All pointers for patches MUST end
with one of the following suffixes; any patch that does not follow with one of the following suffixes; any patch that does not follow
this MUST be ignored unless otherwise specified in a future RFC: this MUST be ignored unless otherwise specified in a future RFC:
o title o title
o description o description
o name o name
For example, a patch to "recurrenceOverrides/2018-01- A patch MUST NOT have the prefix "recurrenceOverrides"; any
05T14:00:00/locations/abcd1234/title" is permissible, but a patch to localization of the override MUST be a patch to the localizations
"uid" is not. property inside the override instead. For example, a patch to
"locations/abcd1234/title" is permissible, but a patch to "uid" or
"recurrenceOverrides/2018-01-05T14:00:00/title" is not.
Note that this specification does not define how to maintain validity Note that this specification does not define how to maintain validity
of localized content. For example, a client application changing a of localized content. For example, a client application changing a
JSCalendar object's title property might also need to update any JSCalendar object's title property might also need to update any
localizations of this property. Client implementations SHOULD localizations of this property. Client implementations SHOULD
provide the means to manage localizations, but how to achieve this is provide the means to manage localizations, but how to achieve this is
specific to the application's workflow and requirements. specific to the application's workflow and requirements.
4.7. Time Zone Properties 4.7. Time Zone Properties
4.7.1. timeZone 4.7.1. timeZone
Type: "String|null" (optional, default: null). Type: "String|null" (optional, default: null).
Identifies the time zone the object is scheduled in, or null for Identifies the time zone the object is scheduled in, or null for
floating time. This is either a name from the IANA Time Zone floating time. This is either a name from the IANA Time Zone
Database [4] or the id of a custom time zone from the "timeZones" Database [TZDB] or the id of a custom time zone from the "timeZones"
property (see Section 1.4.9). If omitted, this MUST be presumed to property (see Section 1.4.9). If omitted, this MUST be presumed to
be null (i.e., floating time). be null (i.e., floating time).
4.7.2. timeZones 4.7.2. timeZones
Type: "String[TimeZone]" (optional). Type: "String[TimeZone]" (optional).
Maps identifiers of custom time zones to their time zone definition. Maps identifiers of custom time zones to their time zone definition.
The following restrictions apply for each key in the map: The following restrictions apply for each key in the map:
skipping to change at page 48, line 11 skipping to change at page 48, line 11
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.
{ {
"...": "", "...": "",
"title": "April Fool's Day", "title": "April Fool's Day",
"showWithoutTime": true, "showWithoutTime": true,
"start": "1900-04-01T00:00:00", "start": "1900-04-01T00:00:00",
"duration": "P1D", "duration": "P1D",
"recurrenceRule": { "recurrenceRules": [{
"@type": "RecurrenceRule", "@type": "RecurrenceRule",
"frequency": "yearly" "frequency": "yearly"
} }]
} }
6.5. Task with a due date 6.5. Task with a due date
This example illustrates a task with a due date. It is a reminder to This example illustrates a task with a due date. It is a reminder to
buy groceries before 6pm Vienna local time on January 19, 2018. The buy groceries before 6pm Vienna local time on January 19, 2018. The
calendar user expects to need 1 hour for shopping. calendar user expects to need 1 hour for shopping.
{ {
"...": "", "...": "",
skipping to change at page 49, line 38 skipping to change at page 49, line 38
This example illustrates the use of floating-time. Since January 1, This example illustrates the use of floating-time. Since January 1,
2018, a calendar user blocks 30 minutes every day to practice Yoga at 2018, a calendar user blocks 30 minutes every day to practice Yoga at
7am local time, in whatever time-zone the user is located on that 7am local time, in whatever time-zone the user is located on that
date. date.
{ {
"...": "", "...": "",
"title": "Yoga", "title": "Yoga",
"start": "2018-01-01T07:00:00", "start": "2018-01-01T07:00:00",
"duration": "PT30M", "duration": "PT30M",
"recurrenceRule": { "recurrenceRules": [{
"@type": "RecurrenceRule", "@type": "RecurrenceRule",
"frequency": "daily" "frequency": "daily"
} }]
} }
6.8. Event with multiple locations and localization 6.8. Event with multiple locations and localization
This example illustrates an event that happens at both a physical and This example illustrates an event that happens at both a physical and
a virtual location. Fans can see a live convert on premises or a virtual location. Fans can see a live convert on premises or
online. The event title and descriptions are localized. online. The event title and descriptions are localized.
{ {
"...": "", "...": "",
skipping to change at page 51, line 18 skipping to change at page 51, line 18
"start": "2018-01-08T09:00:00", "start": "2018-01-08T09:00:00",
"timeZone": "Europe/London", "timeZone": "Europe/London",
"duration": "PT1H30M", "duration": "PT1H30M",
"locations": { "locations": {
"2a358cee-6489-4f14-a57f-c104db4dc2f1": { "2a358cee-6489-4f14-a57f-c104db4dc2f1": {
"@type": "Location", "@type": "Location",
"title": "Math lab room 1", "title": "Math lab room 1",
"description": "Math Lab I, Department of Mathematics" "description": "Math Lab I, Department of Mathematics"
} }
}, },
"recurrenceRule": { "recurrenceRules": [{
"@type": "RecurrenceRule", "@type": "RecurrenceRule",
"frequency": "weekly", "frequency": "weekly",
"until": "2018-06-25T09:00:00" "until": "2018-06-25T09:00:00"
}, }],
"recurrenceOverrides": { "recurrenceOverrides": {
"2018-01-05T14:00:00": { "2018-01-05T14:00:00": {
"title": "Introduction to Calculus I (optional)" "title": "Introduction to Calculus I (optional)"
}, },
"2018-04-02T09:00:00": { "2018-04-02T09:00:00": {
"excluded": "true" "excluded": "true"
}, },
"2018-06-25T09:00:00": { "2018-06-25T09:00:00": {
"title": "Calculus I Exam", "title": "Calculus I Exam",
"start": "2018-06-25T10:00:00", "start": "2018-06-25T10:00:00",
skipping to change at page 52, line 18 skipping to change at page 52, line 18
"start": "2018-01-08T09:00:00", "start": "2018-01-08T09:00:00",
"timeZone": "Africa/Johannesburg", "timeZone": "Africa/Johannesburg",
"duration": "PT1H", "duration": "PT1H",
"virtualLocations": { "virtualLocations": {
"2a358cee-6489-4f14-a57f-c104db4dc2f1": { "2a358cee-6489-4f14-a57f-c104db4dc2f1": {
"@type": "VirtualLocation", "@type": "VirtualLocation",
"name": "ChatMe meeting room", "name": "ChatMe meeting room",
"uri": "https://chatme.example.com?id=1234567" "uri": "https://chatme.example.com?id=1234567"
} }
}, },
"recurrenceRule": { "recurrenceRules": [{
"@type": "RecurrenceRule", "@type": "RecurrenceRule",
"frequency": "weekly" "frequency": "weekly"
}, }],
"replyTo": { "replyTo": {
"imip": "mailto:6489-4f14-a57f-c1@schedule.example.com" "imip": "mailto:6489-4f14-a57f-c1@schedule.example.com"
}, },
"participants": { "participants": {
"dG9tQGZvb2Jhci5xlLmNvbQ": { "dG9tQGZvb2Jhci5xlLmNvbQ": {
"@type": "Participant", "@type": "Participant",
"name": "Tom Tool", "name": "Tom Tool",
"email": "tom@foobar.example.com", "email": "tom@foobar.example.com",
"sendTo": { "sendTo": {
"imip": "mailto:6489-4f14-a57f-c1@calendar.example.com" "imip": "mailto:6489-4f14-a57f-c1@calendar.example.com"
skipping to change at page 55, line 37 skipping to change at page 55, line 37
Author: See the "Author's Address" section of this document. Author: See the "Author's Address" section of this document.
Change controller: IETF Change controller: IETF
8.2. Creation of "JSCalendar Properties" Registry 8.2. Creation of "JSCalendar Properties" Registry
The IANA will create the "JSCalendar Properties" registry to allow The IANA will create the "JSCalendar Properties" registry to allow
interoperability of extensions to JSCalendar objects. interoperability of extensions to JSCalendar objects.
This registry follows the expert review process unless the "intended This registry follows the Expert Review process ([RFC8126],
use" field is "common", in which case registration follows the Section 4.5) unless the "intended use" field is "common", in which
specification required process. Preliminary community review for case registration follows the Specification Required process
this registry is optional but strongly encouraged. ([RFC8126], Section 4.6). Preliminary community review for this
registry is optional but strongly encouraged.
A registration can have an intended use of "common", "reserved", or A registration can have an intended use of "common", "reserved", or
"obsolete". The IANA will list common-use registrations prominently "obsolete". The IANA will list common-use registrations prominently
and separately from those with other intended use values. and separately from those with other intended use values.
A "reserved" registration reserves a property name without assigning A "reserved" registration reserves a property name without assigning
semantics to avoid name collisions with future extensions or protocol semantics to avoid name collisions with future extensions or protocol
use. use.
An "obsolete" registration denotes a property that is no longer An "obsolete" registration denotes a property that is no longer
skipping to change at page 57, line 51 skipping to change at page 58, line 5
Context. Objects not listed in Context MAY already have Context. Objects not listed in Context MAY already have
registered a different property with the same name. registered a different property with the same name.
o Property Type: The type of this property, using type signatures as o Property Type: The type of this property, using type signatures as
specified in Section 1.3. The property type MUST be registed in specified in Section 1.3. The property type MUST be registed in
the Type Registry. the Type Registry.
o Property Context: A comma-separated list of JSCalendar object o Property Context: A comma-separated list of JSCalendar object
types this property is allowed on. types this property is allowed on.
o RFC Reference: The RFC and section where the property is specified o Reference or Description: A brief description or RFC number and
(omitted for "reserved" property names). section reference where the property is specified (omitted for
"reserved" property 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 IETF-stream 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 Name | Property Type | Property | RFC Re | | Property Name | Property Type | Property | Referen |
| | | Context | ferenc | | | | Context | ce or D |
| | | | e | | | | | escript |
+---------------+-----------------------------+------------+--------+ | | | | ion |
| @type | String | JSEvent, | Sectio | +---------------+----------------------------+------------+---------+
| | | JSTask, | n | | @type | String | JSEvent, | Section |
| | | JSGroup, A | 4.1.1, | | | | JSTask, | 4.1.1, |
| | | bsoluteTri | Sectio | | | | JSGroup, A | Section |
| | | gger, | n | | | | bsoluteTri | 4.5.2, |
| | | Alert, | 4.5.2, | | | | gger, | Section |
| | | Link, | Sectio | | | | Alert, | 4.2.7, |
| | | Location, | n | | | | Link, | Section |
| | | OffsetTrig | 4.2.7, | | | | Location, | 4.2.5, |
| | | ger, Parti | Sectio | | | | OffsetTrig | Section |
| | | cipant, Re | n | | | | ger, Parti | 4.4.5, |
| | | currenceRu | 4.2.5, | | | | cipant, Re | Section |
| | | le, | Sectio | | | | currenceRu | 4.3.2, |
| | | Relation, | n | | | | le, | Section |
| | | TimeZone, | 4.4.5, | | | | Relation, | 4.1.3, |
| | | VirtualLoc | Sectio | | | | TimeZone, | Section |
| | | ation | n | | | | VirtualLoc | 4.7.2, |
| | | | 4.3.2, | | | | ation | Section |
| | | | Sectio | | | | | 4.2.6 |
| | | | n | | | | | |
| | | | 4.1.3, | | acknowledged | UTCDateTime | Alert | Section |
| | | | Sectio | | | | | 4.5.2 |
| | | | n | | | | | |
| | | | 4.7.2, | | action | String | Alert | Section |
| | | | Sectio | | | | | 4.5.2 |
| | | | n | | | | | |
| | | | 4.2.6 | | alerts | Id[Alert] | JSEvent, | Section |
| | | | | | | | JSTask | 4.5.2 |
| acknowledged | UTCDateTime | Alert | Sectio | | | | | |
| | | | n | | byDay | NDay[] | Recurrence | Section |
| | | | 4.5.2 | | | | Rule | 4.3.2 |
| | | | | | | | | |
| action | String | Alert | Sectio | | byHour | UnsignedInt[] | Recurrence | Section |
| | | | n | | | | Rule | 4.3.2 |
| | | | 4.5.2 | | | | | |
| | | | | | byMinute | UnsignedInt[] | Recurrence | Section |
| alerts | Id[Alert] | JSEvent, | Sectio | | | | Rule | 4.3.2 |
| | | JSTask | n | | | | | |
| | | | 4.5.2 | | byMonth | String[] | Recurrence | Section |
| | | | | | | | Rule | 4.3.2 |
| byDay | NDay[] | Recurrence | Sectio | | | | | |
| | | Rule | n | | byMonthDay | Int[] | Recurrence | Section |
| | | | 4.3.2 | | | | Rule | 4.3.2 |
| | | | | | | | | |
| byHour | UnsignedInt[] | Recurrence | Sectio | | bySecond | UnsignedInt[] | Recurrence | Section |
| | | Rule | n | | | | Rule | 4.3.2 |
| | | | 4.3.2 | | | | | |
| | | | | | bySetPosition | Int[] | Recurrence | Section |
| byMinute | UnsignedInt[] | Recurrence | Sectio | | | | Rule | 4.3.2 |
| | | Rule | n | | | | | |
| | | | 4.3.2 | | byWeekNo | Int[] | Recurrence | Section |
| | | | | | | | Rule | 4.3.2 |
| byMonth | String[] | Recurrence | Sectio | | | | | |
| | | Rule | n | | byYearDay | Int[] | Recurrence | Section |
| | | | 4.3.2 | | | | Rule | 4.3.2 |
| | | | | | | | | |
| byMonthDay | Int[] | Recurrence | Sectio | | categories | String[Boolean] | JSEvent, | Section |
| | | Rule | n | | | | JSTask, | 4.2.10 |
| | | | 4.3.2 | | | | JSGroup | |
| | | | | | | | | |
| bySecond | UnsignedInt[] | Recurrence | Sectio | | cid | String | Link | Section |
| | | Rule | n | | | | | 4.2.7 |
| | | | 4.3.2 | | | | | |
| | | | | | color | String | JSEvent, | Section |
| bySetPosition | Int[] | Recurrence | Sectio | | | | JSTask, | 4.2.11 |
| | | Rule | n | | | | JSGroup | |
| | | | 4.3.2 | | | | | |
| | | | | | contentType | String | Link | Section |
| byWeekNo | Int[] | Recurrence | Sectio | | | | | 4.2.7 |
| | | Rule | n | | | | | |
| | | | 4.3.2 | | coordinates | String | Location | Section |
| | | | | | | | | 4.2.5 |
| byYearDay | Int[] | Recurrence | Sectio | | | | | |
| | | Rule | n | | count | UnsignedInt | Recurrence | Section |
| | | | 4.3.2 | | | | Rule | 4.3.2 |
| | | | | | | | | |
| categories | String[Boolean] | JSEvent, | Sectio | | created | UTCDateTime | JSEvent, | Section |
| | | JSTask, | n | | | | JSTask, | 4.1.5 |
| | | JSGroup | 4.2.10 | | | | JSGroup | |
| | | | | | | | | |
| cid | String | Link | Sectio | | delegatedFrom | String[Boolean] | Participan | Section |
| | | | n | | | | t | 4.4.5 |
| | | | 4.2.7 | | | | | |
| | | | | | delegatedTo | String[Boolean] | Participan | Section |
| color | String | JSEvent, | Sectio | | | | t | 4.4.5 |
| | | JSTask, | n | | | | | |
| | | JSGroup | 4.2.11 | | description | String | JSEvent, | Section |
| | | | | | | | JSTask, | 4.2.2, |
| contentType | String | Link | Sectio | | | | Location, | Section |
| | | | n | | | | VirtualLoc | 4.2.5, |
| | | | 4.2.7 | | | | ation | Section |
| | | | | | | | | 4.2.6 |
| coordinates | String | Location | Sectio | | | | | |
| | | | n | | descriptionCo | String | JSEvent, | Section |
| | | | 4.2.5 | | ntentType | | JSTask | 4.2.3 |
| | | | | | | | | |
| count | UnsignedInt | Recurrence | Sectio | | display | String | Link | Section |
| | | Rule | n | | | | | 4.2.7 |
| | | | 4.3.2 | | | | | |
| | | | | | due | LocalDateTime | JSTask | Section |
| created | UTCDateTime | JSEvent, | Sectio | | | | | 5.2.1 |
| | | JSTask, | n | | | | | |
| | | JSGroup | 4.1.5 | | duration | Duration | JSEvent | Section |
| | | | | | | | | 5.1.2 |
| delegatedFrom | String[Boolean] | Participan | Sectio | | | | | |
| | | t | n | | email | String | Participan | Section |
| | | | 4.4.5 | | | | t | 4.4.5 |
| | | | | | | | | |
| delegatedTo | String[Boolean] | Participan | Sectio | | entries | String[JSTask|JSEvent] | JSGroup | Section |
| | | t | n | | | | | 5.3.1 |
| | | | 4.4.5 | | | | | |
| | | | | | estimatedDura | Duration | JSTask | Section |
| description | String | JSEvent, | Sectio | | tion | | | 5.2.3 |
| | | JSTask, | n | | | | | |
| | | Location, | 4.2.2, | | excluded | Boolean | JSEvent, | Section |
| | | VirtualLoc | Sectio | | | | JSTask | 4.3.4 |
| | | ation | n | | | | | |
| | | | 4.2.5, | | expectReply | Boolean | Participan | Section |
| | | | Sectio | | | | t | 4.4.5 |
| | | | n | | | | | |
| | | | 4.2.6 | | firstDayOfWee | String | Recurrence | Section |
| | | | | | k | | Rule | 4.3.2 |
| descriptionCo | String | JSEvent, | Sectio | | | | | |
| ntentType | | JSTask | n | | freeBusyStatu | String | JSEvent, | Section |
| | | | 4.2.3 | | s | | JSTask | 4.4.2 |
| | | | | | | | | |
| display | String | Link | Sectio | | frequency | String | Recurrence | Section |
| | | | n | | | | Rule | 4.3.2 |
| | | | 4.2.7 | | | | | |
| | | | | | href | String | Link | Section |
| due | LocalDateTime | JSTask | Sectio | | | | | 4.2.7 |
| | | | n | | | | | |
| | | | 5.2.1 | | interval | UnsignedInt | Recurrence | Section |
| | | | | | | | Rule | 4.3.2 |
| duration | Duration | JSEvent | Sectio | | | | | |
| | | | n | | invitedBy | String | Participan | Section |
| | | | 5.1.2 | | | | t | 4.4.5 |
| | | | | | | | | |
| email | String | Participan | Sectio | | keywords | String[Boolean] | JSEvent, | Section |
| | | t | n | | | | JSTask, | 4.2.9 |
| | | | 4.4.5 | | | | JSGroup | |
| | | | | | | | | |
| entries | String[JSTask|JSEvent] | JSGroup | Sectio | | kind | String | Participan | Section |
| | | | n | | | | t | 4.4.5 |
| | | | 5.3.1 | | | | | |
| | | | | | language | String | Participan | Section |
| estimatedDura | Duration | JSTask | Sectio | | | | t | 4.4.5 |
| tion | | | n | | | | | |
| | | | 5.2.3 | | linkIds | Id[Boolean] | Location, | Section |
| | | | | | | | Participan | 4.2.5, |
| excluded | Boolean | JSEvent, | Sectio | | | | t | Section |
| | | JSTask | n | | | | | 4.4.5 |
| | | | 4.3.4 | | | | | |
| | | | | | links | Id[Link] | JSGroup, | Section |
| expectReply | Boolean | Participan | Sectio | | | | JSEvent, | 4.2.7 |
| | | t | n | | | | JSTask | |
| | | | 4.4.5 | | | | | |
| | | | | | locale | String | JSGroup, | Section |
| firstDayOfWee | String | Recurrence | Sectio | | | | JSEvent, | 4.2.7 |
| k | | Rule | n | | | | JSTask | |
| | | | 4.3.2 | | | | | |
| | | | | | localizations | String[PatchObject] | JSEvent, | Section |
| freeBusyStatu | String | JSEvent, | Sectio | | | | JSTask | 4.6.1 |
| s | | JSTask | n | | | | | |
| | | | 4.4.2 | | locationId | String | Participan | Section |
| | | | | | | | t | 4.4.5 |
| frequency | String | Recurrence | Sectio | | | | | |
| | | Rule | n | | locations | Id[Location] | JSEvent, | Section |
| | | | 4.3.2 | | | | JSTask | 4.2.5 |
| | | | | | | | | |
| href | String | Link | Sectio | | locationTypes | String[Boolean] | Location | Section |
| | | | n | | | | | 4.2.5 |
| | | | 4.2.7 | | | | | |
| | | | | | memberOf | String[Boolean] | Participan | Section |
| interval | UnsignedInt | Recurrence | Sectio | | | | t | 4.4.5 |
| | | Rule | n | | | | | |
| | | | 4.3.2 | | method | String | JSEvent, | Section |
| | | | | | | | JSTask | 4.1.8 |
| invitedBy | String | Participan | Sectio | | | | | |
| | | t | n | | name | String | Location, | Section |
| | | | 4.4.5 | | | | VirtualLoc | 4.2.5, |
| | | | | | | | ation, Par | Section |
| keywords | String[Boolean] | JSEvent, | Sectio | | | | ticipant | 4.2.6, |
| | | JSTask, | n | | | | | Section |
| | | JSGroup | 4.2.9 | | | | | 4.4.5 |
| | | | | | | | | |
| kind | String | Participan | Sectio | | offset | SignedDuration | OffsetTrig | Section |
| | | t | n | | | | ger | 4.5.2 |
| | | | 4.4.5 | | | | | |
| | | | | | participants | Id[Participant] | JSEvent, | Section |
| language | String | Participan | Sectio | | | | JSTask | 4.4.5 |
| | | t | n | | | | | |
| | | | 4.4.5 | | participation | String | Participan | Section |
| | | | | | Comment | | t | 4.4.5 |
| linkIds | Id[Boolean] | Location, | Sectio | | | | | |
| | | Participan | n | | participation | String | Participan | Section |
| | | t | 4.2.5, | | Status | | t | 4.4.5 |
| | | | Sectio | | | | | |
| | | | n | | priority | Int | JSEvent, | Section |
| | | | 4.4.5 | | | | JSTask | 4.4.1 |
| | | | | | | | | |
| links | Id[Link] | JSGroup, | Sectio | | privacy | String | JSEvent, | Section |
| | | JSEvent, | n | | | | JSTask | 4.4.3 |
| | | JSTask | 4.2.7 | | | | | |
| | | | | | prodId | String | JSEvent, | Section |
| locale | String | JSGroup, | Sectio | | | | JSTask, | 4.1.4 |
| | | JSEvent, | n | | | | JSGroup | |
| | | JSTask | 4.2.7 | | | | | |
| | | | | | progress | String | JSTask, Pa | Section |
| localizations | String[PatchObject] | JSEvent, | Sectio | | | | rticipant | 5.2.4 |
| | | JSTask | n | | | | | |
| | | | 4.6.1 | | progressUpdat | UTCDateTime | JSTask, Pa | Section |
| | | | | | ed | | rticipant | 5.2.5 |
| locationId | String | Participan | Sectio | | | | | |
| | | t | n | | recurrenceId | LocalDateTime | JSEvent, | Section |
| | | | 4.4.5 | | | | JSTask | 4.3.1 |
| | | | | | | | | |
| locations | Id[Location] | JSEvent, | Sectio | | recurrenceOve | LocalDateTime[PatchObject] | JSEvent, | Section |
| | | JSTask | n | | rrides | | JSTask | 4.3.3 |
| | | | 4.2.5 | | | | | |
| | | | | | recurrenceRul | RecurrenceRule[] | JSEvent, | Section |
| locationTypes | String[Boolean] | Location | Sectio | | es | | JSTask | 4.3.2 |
| | | | n | | | | | |
| | | | 4.2.5 | | rel | String | Link | Section |
| | | | | | | | | 4.2.7 |
| memberOf | String[Boolean] | Participan | Sectio | | | | | |
| | | t | n | | relatedTo | String[Relation] | JSEvent, | Section |
| | | | 4.4.5 | | | | JSTask, | 4.1.3, |
| | | | | | | | Alert | Section |
| method | String | JSEvent, | Sectio | | | | | 4.5.2 |
| | | JSTask | n | | | | | |
| | | | 4.1.8 | | relation | String[Boolean] | Relation | Section |
| | | | | | | | | 1.4.10 |
| name | String | Location, | Sectio | | | | | |
| | | VirtualLoc | n | | relativeTo | String | OffsetTrig | Section |
| | | ation, Par | 4.2.5, | | | | ger, | 4.5.2, |
| | | ticipant | Sectio | | | | Location | Section |
| | | | n | | | | | 4.2.5 |
| | | | 4.2.6, | | | | | |
| | | | Sectio | | replyTo | String[String] | JSEvent, | Section |
| | | | n | | | | JSTask | 4.4.4 |
| | | | 4.4.5 | | | | | |
| | | | | | roles | String[Boolean] | Participan | Section |
| offset | SignedDuration | OffsetTrig | Sectio | | | | t | 4.4.5 |
| | | ger | n | | | | | |
| | | | 4.5.2 | | rscale | String | Recurrence | Section |
| | | | | | | | Rule | 4.3.2 |
| participants | Id[Participant] | JSEvent, | Sectio | | | | | |
| | | JSTask | n | | scheduleAgent | String | Participan | Section |
| | | | 4.4.5 | | | | t | 4.4.5 |
| | | | | | | | | |
| participation | String | Participan | Sectio | | scheduleSeque | UnsignedInt | Participan | Section |
| Comment | | t | n | | nce | | t | 4.4.5 |
| | | | 4.4.5 | | | | | |
| | | | | | scheduleUpdat | UTCDateTime | Participan | Section |
| participation | String | Participan | Sectio | | ed | | t | 4.4.5 |
| Status | | t | n | | | | | |
| | | | 4.4.5 | | sendTo | String[String] | Participan | Section |
| | | | | | | | t | 4.4.5 |
| priority | Int | JSEvent, | Sectio | | | | | |
| | | JSTask | n | | sequence | UnsignedInt | JSEvent, | Section |
| | | | 4.4.1 | | | | JSTask | 4.1.7 |
| | | | | | | | | |
| privacy | String | JSEvent, | Sectio | | showWithoutTi | Boolean | JSEvent, | Section |
| | | JSTask | n | | me | | JSTask | 4.2.4 |
| | | | 4.4.3 | | | | | |
| | | | | | size | UnsignedInt | Link | Section |
| prodId | String | JSEvent, | Sectio | | | | | 4.2.7 |
| | | JSTask, | n | | | | | |
| | | JSGroup | 4.1.4 | | skip | String | Recurrence | Section |
| | | | | | | | Rule | 4.3.2 |
| progress | String | JSTask, Pa | Sectio | | | | | |
| | | rticipant | n | | source | String | JSGroup | Section |
| | | | 5.2.4 | | | | | 5.3.2 |
| | | | | | | | | |
| progressUpdat | UTCDateTime | JSTask, Pa | Sectio | | start | LocalDateTime | JSEvent, | Section |
| ed | | rticipant | n | | | | JSTask | 5.1.1, |
| | | | 5.2.5 | | | | | Section |
| | | | | | | | | 5.2.2 |
| recurrenceId | LocalDateTime | JSEvent, | Sectio | | | | | |
| | | JSTask | n | | status | String | JSEvent | Section |
| | | | 4.3.1 | | | | | 5.1.3 |
| | | | | | | | | |
| recurrenceOve | LocalDateTime[PatchObject] | JSEvent, | Sectio | | timeZone | String|null | JSEvent, | Section |
| rrides | | JSTask | n | | | | JSTask, | 4.7.1, |
| | | | 4.3.3 | | | | Location | Section |
| | | | | | | | | 4.2.5 |
| recurrenceRul | RecurrenceRule | JSEvent, | Sectio | | | | | |
| e | | JSTask | n | | timeZones | String[TimeZone] | JSEvent, | Section |
| | | | 4.3.2 | | | | JSTask | 4.7.2 |
| | | | | | | | | |
| rel | String | Link | Sectio | | title | String | JSEvent, | Section |
| | | | n | | | | JSTask, | 4.2.1 |
| | | | 4.2.7 | | | | JSGroup, | |
| | | | | | | | Link | |
| relatedTo | String[Relation] | JSEvent, | Sectio | | | | | |
| | | JSTask, | n | | trigger | OffsetTrigger|AbsoluteTrig | Alert | Section |
| | | Alert | 4.1.3, | | | ger|UnknownTrigger | | 4.5.2 |
| | | | Sectio | | | | | |
| | | | n | | uid | String | JSEvent, | Section |
| | | | 4.5.2 | | | | JSTask, | 4.1.2 |
| | | | | | | | JSGroup | |
| relation | String[Boolean] | Relation | Sectio | | | | | |
| | | | n | | until | LocalDateTime | Recurrence | Section |
| | | | 1.4.10 | | | | Rule | 4.3.2 |
| | | | | | | | | |
| relativeTo | String | OffsetTrig | Sectio | | updated | UTCDateTime | JSEvent, | Section |
| | | ger, | n | | | | JSTask, | 4.1.6 |
| | | Location | 4.5.2, | | | | JSGroup | |
| | | | Sectio | | | | | |
| | | | n | | uri | String | VirtualLoc | Section |
| | | | 4.2.5 | | | | ation | 4.2.6 |
| | | | | | | | | |
| replyTo | String[String] | JSEvent, | Sectio | | useDefaultAle | Boolean | JSEvent, | Section |
| | | JSTask | n | | rts | | JSTask | 4.5.1 |
| | | | 4.4.4 | | | | | |
| | | | | | virtualLocati | Id[VirtualLocation] | JSEvent, | Section |
| roles | String[Boolean] | Participan | Sectio | | ons | | JSTask | 4.2.6 |
| | | t | n | | | | | |
| | | | 4.4.5 | | when | UTCDateTime | AbsoluteTr | Section |
| | | | | | | | igger | 4.5.2 |
| rscale | String | Recurrence | Sectio | +---------------+----------------------------+------------+---------+
| | | Rule | n |
| | | | 4.3.2 |
| | | | |
| scheduleAgent | String | Participan | Sectio |
| | | t | n |
| | | | 4.4.5 |
| | | | |
| scheduleSeque | UnsignedInt | Participan | Sectio |
| nce | | t | n |
| | | | 4.4.5 |
| | | | |
| scheduleUpdat | UTCDateTime | Participan | Sectio |
| ed | | t | n |
| | | | 4.4.5 |
| | | | |
| sendTo | String[String] | Participan | Sectio |
| | | t | n |
| | | | 4.4.5 |
| | | | |
| sequence | UnsignedInt | JSEvent, | Sectio |
| | | JSTask | n |
| | | | 4.1.7 |
| | | | |
| showWithoutTi | Boolean | JSEvent, | Sectio |
| me | | JSTask | n |
| | | | 4.2.4 |
| | | | |
| 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.
8.3.1. JMAP Types Registry Template 8.3.1. JMAP Types Registry Template
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 Reference or Description: A brief description or RFC number and
(may be omitted for "reserved" type names). section reference where the Type is specified (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 IETF-stream RFCs).
8.3.2. Initial Contents for the JSCalendar Types 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 | Reference or Description |
+-----------------+----------------+ +-----------------+--------------------------+
| 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 |
| | | | | |
| 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
process for a new enum value is the same but is only subject to process for a new enum value is the same but is only subject to
expert review; a specification is not required for a new allowed Expert Review; a specification is not required for a new allowed
value in an existing enum property where a simple description will value in an existing enum property where a simple description will
suffice. suffice.
8.4.1. JMAP Enum Subregistry Creation Template 8.4.1. JMAP Enum Subregistry Creation Template
This template is for adding a new subregistry to the JMAP Enum This template is for adding a new subregistry to the JMAP Enum
registry. registry.
o Property Name: The name(s) of the property or properties where o Registry Name: This MUST be of the form "Enum Values for
{property-name} (Context: {context})" where:
{property-name} is the name(s) of the property or properties where
these values may be used. This MUST be registered in the these values may be used. This MUST be registered in the
JSCalendar Properties registry. JSCalendar Properties registry.
o Property Context: The allowed object types where the property or {context} is the list of allowed object types where the property
properties may appear, as registered in the JSCalendar Properties or properties may appear, as registered in the JSCalendar
registry. This disambiguates where there may be two distinct Properties registry. This disambiguates where there may be two
properties with the same name in different contexts. distinct properties with the same name in different contexts.
o Change Controller: ("IETF" for Standards Track / BCP RFCs). o Change Controller: ("IETF" for IETF-stream RFCs).
o Values: The list of defined values for this enum, using the o Experts: The initial list of experts for Expert Review of updates
template defined in Section 8.4.2. to the subregistry.
8.4.2. JMAP Enum Subregistry Creation Template o Initial Contents: The initial list of defined values for this
enum, using the template defined in Section 8.4.2.
8.4.2. JMAP Enum Subregistry Template
This template is for adding a new enum value to a subregistry in the This template is for adding a new enum value to a subregistry in the
JMAP Enum registry. When registering a new value for an existing JMAP Enum registry.
enum, the property name and context MUST be submitted with the
registration to identify the appropriate subregistry.
o Enum Value: The verbatim value of the enum. o Enum Value: The verbatim value of the enum.
o Description: A brief description or RFC and section reference for o Reference or Description: A brief description or RFC number and
the semantics of this value. section reference for the semantics of this value.
8.4.3. Initial Contents for the JSCalendar Enum Registry 8.4.3. Initial Contents for the JSCalendar Enum Registry
All RFC section references are for this document. For each subregistry created in this section, all RFC section
references are for this document, the change controller is IETF and
the experts are Neil Jenkins and Robert Stepanek.
------------------------------------------------------------ ------------------------------------------------------------
Property Name: action
Property Context: Alert Enum Values for action (Context: Alert)
Change Controller: IETF
+------------+---------------+ +------------+--------------------------+
| Enum Value | Description | | Enum Value | Reference or Description |
+------------+---------------+ +------------+--------------------------+
| display | Section 4.5.2 | | display | Section 4.5.2 |
| | | | | |
| email | Section 4.5.2 | | email | Section 4.5.2 |
+------------+---------------+ +------------+--------------------------+
Table 3 Table 3
------------------------------------------------------------ ------------------------------------------------------------
Property Name: display Enum Values for display (Context: Link)
Property Context: Link
Change Controller: IETF
+------------+---------------+ +------------+--------------------------+
| Enum Value | Description | | Enum Value | Reference or Description |
+------------+---------------+ +------------+--------------------------+
| badge | Section 4.2.7 | | badge | Section 4.2.7 |
| | | | | |
| graphic | Section 4.2.7 | | graphic | Section 4.2.7 |
| | | | | |
| fullsize | Section 4.2.7 | | fullsize | Section 4.2.7 |
| | | | | |
| thumbnail | Section 4.2.7 | | thumbnail | Section 4.2.7 |
+------------+---------------+ +------------+--------------------------+
Table 4 Table 4
------------------------------------------------------------ ------------------------------------------------------------
Property Name: freeBusyStatus Enum Values for freeBusyStatus (Context: JSEvent, JSTask)
+------------+--------------------------+
Property Context: JSEvent, JSTask | Enum Value | Reference or Description |
+------------+--------------------------+
Change Controller: IETF | free | Section 4.4.2 |
+------------+---------------+ | | |
| Enum Value | Description | | busy | Section 4.4.2 |
+------------+---------------+ +------------+--------------------------+
| free | Section 4.4.2 |
| | |
| busy | Section 4.4.2 |
+------------+---------------+
Table 5 Table 5
------------------------------------------------------------ ------------------------------------------------------------
Property Name: kind Enum Values for kind (Context: Participant)
Property Context: Participant
Change Controller: IETF
+------------+---------------+ +------------+--------------------------+
| Enum Value | Description | | Enum Value | Reference or Description |
+------------+---------------+ +------------+--------------------------+
| individual | Section 4.4.5 | | individual | Section 4.4.5 |
| | | | | |
| group | Section 4.4.5 | | group | Section 4.4.5 |
| | | | | |
| resource | Section 4.4.5 | | resource | Section 4.4.5 |
| | | | | |
| location | Section 4.4.5 | | location | Section 4.4.5 |
+------------+---------------+ +------------+--------------------------+
Table 6 Table 6
------------------------------------------------------------ ------------------------------------------------------------
Property Name: participationStatus Enum Values for participationStatus (Context: Participant)
Property Context: Participant
Change Controller: IETF +--------------+--------------------------+
+--------------+---------------+ | Enum Value | Reference or 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 |
| delegated | Section 4.4.5 | +--------------+--------------------------+
+--------------+---------------+
Table 7 Table 7
------------------------------------------------------------ ------------------------------------------------------------
Property Name: privacy Enum Values for privacy (Context: JSEvent, JSTask)
Property Context: JSEvent, JSTask
Change Controller: IETF
+------------+---------------+ +------------+--------------------------+
| Enum Value | Description | | Enum Value | Reference or Description |
+------------+---------------+ +------------+--------------------------+
| public | Section 4.4.3 | | public | Section 4.4.3 |
| | | | | |
| private | Section 4.4.3 | | private | Section 4.4.3 |
| | | | | |
| secret | Section 4.4.3 | | secret | Section 4.4.3 |
+------------+---------------+ +------------+--------------------------+
Table 8 Table 8
------------------------------------------------------------ ------------------------------------------------------------
Property Name: progress Enum Values for progress (Context: JSTask, Participant)
Property Context: JSTask, Participant
Change Controller: IETF +--------------+--------------------------+
+--------------+---------------+ | Enum Value | Reference or Description |
| Enum Value | Description | +--------------+--------------------------+
+--------------+---------------+ | needs-action | Section 5.2.4 |
| needs-action | Section 5.2.4 | | | |
| | | | in-process | Section 5.2.4 |
| in-process | Section 5.2.4 | | | |
| | | | completed | Section 5.2.4 |
| completed | Section 5.2.4 | | | |
| | | | failed | Section 5.2.4 |
| failed | Section 5.2.4 | | | |
| | | | cancelled | Section 5.2.4 |
| cancelled | Section 5.2.4 | +--------------+--------------------------+
+--------------+---------------+
Table 9 Table 9
------------------------------------------------------------ ------------------------------------------------------------
Property Name: relation Enum Values for relation (Context: Relation)
+------------+--------------------------+
Property Context: Relation | Enum Value | Reference or Description |
+------------+--------------------------+
Change Controller: IETF | first | Section 1.4.10 |
| | |
+------------+----------------+ | next | Section 1.4.10 |
| Enum Value | Description | | | |
+------------+----------------+ | child | Section 1.4.10 |
| first | Section 1.4.10 | | | |
| | | | parent | Section 1.4.10 |
| next | Section 1.4.10 | +------------+--------------------------+
| | |
| child | Section 1.4.10 |
| | |
| parent | Section 1.4.10 |
+------------+----------------+
Table 10 Table 10
------------------------------------------------------------ ------------------------------------------------------------
Property Name: relativeTo Enum Values for relativeTo (Context: OffsetTrigger, Location)
Property Context: OffsetTrigger, Location
Change Controller: IETF +------------+--------------------------+
+------------+---------------+ | Enum Value | Reference or Description |
| Enum Value | Description | +------------+--------------------------+
+------------+---------------+ | start | Section 4.5.2 |
| start | Section 4.5.2 | | | |
| | | | end | Section 4.5.2 |
| end | Section 4.5.2 | +------------+--------------------------+
+------------+---------------+
Table 11 Table 11
------------------------------------------------------------ ------------------------------------------------------------
Property Name: roles Enum Values for roles (Context: Participant)
Property Context: Participant
Change Controller: IETF
+---------------+---------------+ +---------------+--------------------------+
| Enum Value | Description | | Enum Value | Reference or Description |
+---------------+---------------+ +---------------+--------------------------+
| owner | Section 4.4.5 | | owner | Section 4.4.5 |
| | | | | |
| attendee | Section 4.4.5 | | attendee | Section 4.4.5 |
| | | | | |
| optional | Section 4.4.5 | | optional | Section 4.4.5 |
| | | | | |
| informational | Section 4.4.5 | | informational | Section 4.4.5 |
| | | | | |
| chair | Section 4.4.5 | | chair | Section 4.4.5 |
+---------------+---------------+ +---------------+--------------------------+
Table 12 Table 12
------------------------------------------------------------ ------------------------------------------------------------
Property Name: scheduleAgent Enum Values for scheduleAgent (Context: Participant)
Property Context: Participant
Change Controller: IETF +------------+--------------------------+
+------------+---------------+ | Enum Value | Reference or Description |
| Enum Value | Description | +------------+--------------------------+
+------------+---------------+ | server | Section 4.4.5 |
| server | Section 4.4.5 | | | |
| | | | client | Section 4.4.5 |
| client | Section 4.4.5 | | | |
| | | | none | Section 4.4.5 |
| none | Section 4.4.5 | +------------+--------------------------+
+------------+---------------+
Table 13 Table 13
------------------------------------------------------------ ------------------------------------------------------------
Property Name: status Enum Values for status (Context: JSEvent)
Property Context: JSEvent
Change Controller: IETF
+------------+---------------+ +------------+--------------------------+
| Enum Value | Description | | Enum Value | Reference or Description |
+------------+---------------+ +------------+--------------------------+
| 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
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
[COLORS] "CSS Color Module", <https://www.w3.org/TR/css-color-3/>.
[LINKRELS]
"IANA Link Relation Types",
<https://www.iana.org/assignments/link-relations/link-
relations.xhtml>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC2392] Levinson, E., "Content-ID and Message-ID Uniform Resource [RFC2392] Levinson, E., "Content-ID and Message-ID Uniform Resource
Locators", RFC 2392, DOI 10.17487/RFC2392, August 1998, Locators", RFC 2392, DOI 10.17487/RFC2392, August 1998,
<https://www.rfc-editor.org/info/rfc2392>. <https://www.rfc-editor.org/info/rfc2392>.
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet:
skipping to change at page 78, line 14 skipping to change at page 75, line 23
[RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
Interchange Format", STD 90, RFC 8259, Interchange Format", STD 90, RFC 8259,
DOI 10.17487/RFC8259, December 2017, DOI 10.17487/RFC8259, December 2017,
<https://www.rfc-editor.org/info/rfc8259>. <https://www.rfc-editor.org/info/rfc8259>.
[RFC8288] Nottingham, M., "Web Linking", RFC 8288, [RFC8288] Nottingham, M., "Web Linking", RFC 8288,
DOI 10.17487/RFC8288, October 2017, DOI 10.17487/RFC8288, October 2017,
<https://www.rfc-editor.org/info/rfc8288>. <https://www.rfc-editor.org/info/rfc8288>.
[TZDB] "IANA Time Zone Database",
<https://www.iana.org/time-zones>.
10.2. Informative References 10.2. Informative References
[MIME] "IANA Media Types", <https://www.iana.org/assignments/ [MIME] "IANA Media Types", <https://www.iana.org/assignments/
media-types/media-types.xhtml>. media-types/media-types.xhtml>.
10.3. URIs
[1] https://www.iana.org/time-zones
[2] https://www.iana.org/assignments/link-relations/link-
relations.xhtml
[3] https://www.w3.org/TR/2011/REC-css3-color-20110607/#svg-color
[4] https://www.iana.org/time-zones
Authors' Addresses Authors' Addresses
Neil Jenkins Neil Jenkins
Fastmail Fastmail
PO Box 234 PO Box 234
Collins St West Collins St West
Melbourne VIC 8007 Melbourne VIC 8007
Australia Australia
Email: neilj@fastmailteam.com Email: neilj@fastmailteam.com
 End of changes. 70 change blocks. 
729 lines changed or deleted 600 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/