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/ |