draft-ietf-calext-jscalendar-01.txt   draft-ietf-calext-jscalendar-02.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: September 3, 2018 March 2, 2018 Expires: September 6, 2018 March 5, 2018
JSCalendar: A JSON representation of calendar data JSCalendar: A JSON representation of calendar data
draft-ietf-calext-jscalendar-01 draft-ietf-calext-jscalendar-02
Abstract Abstract
This specification defines a data model and JSON representation of This specification defines a data model and JSON representation of
calendar data that can be used for storage and data exchange in a calendar data that can be used for storage and data exchange in a
calendaring and scheduling environment. It aims to be an alternative calendaring and scheduling environment. It aims to be an alternative
to the widely deployed iCalendar data format and to be unambiguous, to the widely deployed iCalendar data format and to be unambiguous,
extendable and simple to process. extendable and simple to process.
Status of This Memo Status of This Memo
skipping to change at page 1, line 34 skipping to change at page 1, line 34
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 September 3, 2018. This Internet-Draft will expire on September 6, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 24 skipping to change at page 3, line 24
5.1.5. status . . . . . . . . . . . . . . . . . . . . . . . 30 5.1.5. status . . . . . . . . . . . . . . . . . . . . . . . 30
5.2. JSTask properties . . . . . . . . . . . . . . . . . . . . 30 5.2. JSTask properties . . . . . . . . . . . . . . . . . . . . 30
5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 30
5.2.3. timeZone . . . . . . . . . . . . . . . . . . . . . . 30 5.2.3. timeZone . . . . . . . . . . . . . . . . . . . . . . 30
5.2.4. estimatedDuration . . . . . . . . . . . . . . . . . . 31 5.2.4. estimatedDuration . . . . . . . . . . . . . . . . . . 31
5.2.5. completed . . . . . . . . . . . . . . . . . . . . . . 31 5.2.5. completed . . . . . . . . . . . . . . . . . . . . . . 31
5.2.6. isAllDay . . . . . . . . . . . . . . . . . . . . . . 31 5.2.6. isAllDay . . . . . . . . . . . . . . . . . . . . . . 31
5.2.7. progress . . . . . . . . . . . . . . . . . . . . . . 31 5.2.7. progress . . . . . . . . . . . . . . . . . . . . . . 31
5.2.8. status . . . . . . . . . . . . . . . . . . . . . . . 32 5.2.8. status . . . . . . . . . . . . . . . . . . . . . . . 32
5.3. JSGroup properties . . . . . . . . . . . . . . . . . . . 32 5.3. JSGroup properties . . . . . . . . . . . . . . . . . . . 33
5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 33 5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 33
5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 33 5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 34
6. Conversion from and to iCalendar . . . . . . . . . . . . . . 33 6. Conversion from and to iCalendar . . . . . . . . . . . . . . 34
6.1. JSEvent . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.1. JSEvent . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.2. JSTask . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.2. JSTask . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.3. JSGroup . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.3. JSGroup . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.4. Common properties . . . . . . . . . . . . . . . . . . . . 36 6.4. Common properties . . . . . . . . . . . . . . . . . . . . 37
6.5. Locations and participants . . . . . . . . . . . . . . . 38 6.5. Locations and participants . . . . . . . . . . . . . . . 39
6.6. Unknown properties . . . . . . . . . . . . . . . . . . . 40 6.6. Unknown properties . . . . . . . . . . . . . . . . . . . 41
7. JSCalendar object examples . . . . . . . . . . . . . . . . . 40 7. JSCalendar object examples . . . . . . . . . . . . . . . . . 41
7.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 40 7.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 41
7.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 41 7.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 42
7.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 41 7.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 42
7.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 42 7.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 43
7.5. Task with a due date . . . . . . . . . . . . . . . . . . 42 7.5. Task with a due date . . . . . . . . . . . . . . . . . . 43
7.6. Event with end time-zone . . . . . . . . . . . . . . . . 43 7.6. Event with end time-zone . . . . . . . . . . . . . . . . 44
7.7. Floating-time event (with recurrence) . . . . . . . . . . 43 7.7. Floating-time event (with recurrence) . . . . . . . . . . 44
7.8. Event with multiple locations and localization . . . . . 44 7.8. Event with multiple locations and localization . . . . . 45
7.9. Recurring event with overrides . . . . . . . . . . . . . 45 7.9. Recurring event with overrides . . . . . . . . . . . . . 46
7.10. Recurring event with participants . . . . . . . . . . . . 46 7.10. Recurring event with participants . . . . . . . . . . . . 47
8. Security Considerations . . . . . . . . . . . . . . . . . . . 47 8. Security Considerations . . . . . . . . . . . . . . . . . . . 48
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 47 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 48
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 47 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 48
11.1. Normative References . . . . . . . . . . . . . . . . . . 47 11.1. Normative References . . . . . . . . . . . . . . . . . . 48
11.2. Informative References . . . . . . . . . . . . . . . . . 50 11.2. Informative References . . . . . . . . . . . . . . . . . 51
11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 50 11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 51
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 31, line 51 skipping to change at page 31, line 51
All-day tasks MAY be bound to a specific time-zone, as defined by the All-day tasks MAY be bound to a specific time-zone, as defined by the
*timeZone* property. *timeZone* property.
5.2.7. progress 5.2.7. progress
In addition to the common properties of a *Participant* object In addition to the common properties of a *Participant* object
(Section 4.4.5), a Participant within a JSTask supports the following (Section 4.4.5), a Participant within a JSTask supports the following
property: property:
o *progress*: "ParticipantProgress|null" The progress of the o *progress*: "ParticipantProgress|null" The progress of the
participant for this task, if known. participant for this task, if known. This property MUST be "null"
if the *rsvpResponse* of this participant is any other value but
"accepted".
A *ParticipantProgress* object has the following properties: A *ParticipantProgress* object has the following properties:
o *status*: "String" Describes the completion status of the o *status*: "String" Describes the completion status of the
participant's progress. participant's progress.
The value MUST be at most one of the following values, registered The value MUST be at most one of the following values, registered
in a future RFC, or a vendor-specific value: in a future RFC, or a vendor-specific value:
* "completed": The progress of this participant is complete. * "completed": The participant completed their progress.
* "in-process": The progress of this participant is in process. * "in-process": The participant processes this task.
o *timestamp*: "UTCDate" Describes the latest time when the * "failed": The participant failed to complete their progress.
o *timestamp*: "UTCDate" Describes the last time when the
participant progress got updated. participant progress got updated.
5.2.8. status 5.2.8. status
Type: "String" Type: "String"
The scheduling status (Section 4.4) of a JSTask defaults to "needs- If omitted, the default scheduling status (Section 4.4) of a JSTask
action" if omitted. is defined as follows (in order of evaluation):
o "needs-action": if the task has no participants, or if at least
one participant of the task has *rsvpResponse* set to "needs-
action" (eiher explicitly or by default).
o "completed": if all the *ParticipantProgress* status of the task
participants is "completed".
o "failed": if at least one *ParticipantProgress* status of the task
participants is "failed".
o "in-process": if at least one *ParticipantProgress* status of the
task participants is "in-process".
o "pending": If none of the other criteria match.
If set, it MUST be one of: If set, it MUST be one of:
o "needs-action": Indicates the task needs action. o "needs-action": Indicates the task needs action.
o "completed": Indicates the task is completed. If this value is o "completed": Indicates the task is completed. If this value is
set, then the timestamp in the *completed* property MUST NOT be set, then the timestamp in the *completed* property MUST NOT be
null. null.
o "in-process": Indicates the task is in process. o "in-process": Indicates the task is in process.
o "cancelled": Indicates the task is cancelled. o "cancelled": Indicates the task is cancelled.
o "pending": Indicates the task has been created, but not yet
started.
o "failed": Indicates the task failed.
5.3. JSGroup properties 5.3. JSGroup properties
JSGroup supports the following JSCalendar properties (Section 4): JSGroup supports the following JSCalendar properties (Section 4):
o @type o @type
o uid o uid
o created o created
skipping to change at page 35, line 39 skipping to change at page 36, line 39
| | property and "rel="end"". | | | property and "rel="end"". |
| | | | | |
| estimatedDuration | Corresponds to the ESTIMATED-DURATION | | estimatedDuration | Corresponds to the ESTIMATED-DURATION |
| | iCalendar property. *NON-STANDARD*: this | | | iCalendar property. *NON-STANDARD*: this |
| | property is currently non-standard, see | | | property is currently non-standard, see |
| | [draft-apthorp-ical-tasks]. | | | [draft-apthorp-ical-tasks]. |
| | | | | |
| completed | Maps to the COMPLETED iCalendar property. | | completed | Maps to the COMPLETED iCalendar property. |
| | | | | |
| progress | Corresponds to the PARTSTAT and COMPLETED | | progress | Corresponds to the PARTSTAT and COMPLETED |
| | properties in iCalendar. | | | properties in iCalendar, including the |
| | currently non-standard definitions in |
| | [draft-apthorp-ical-tasks]. |
| | |
| status | Corresponds to the STATUS property in |
| | iCalendar, including the currently non- |
| | standard definitions in |
| | [draft-apthorp-ical-tasks]. |
+-------------------+-----------------------------------------------+ +-------------------+-----------------------------------------------+
Table 3: Translation between JSTask and iCalendar Table 3: Translation between JSTask and iCalendar
6.3. JSGroup 6.3. JSGroup
A JSGroup converts to a iCalendar VCALENDAR containing VEVENT or A JSGroup converts to a iCalendar VCALENDAR containing VEVENT or
VTODO components. VTODO components.
+----------+--------------------------------------------------------+ +----------+--------------------------------------------------------+
 End of changes. 13 change blocks. 
38 lines changed or deleted 69 lines changed or added

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