--- 1/draft-ietf-calext-jscalendar-01.txt 2018-03-05 03:13:17.774664285 -0800 +++ 2/draft-ietf-calext-jscalendar-02.txt 2018-03-05 03:13:17.866666458 -0800 @@ -1,18 +1,18 @@ Calendaring extensions N. Jenkins Internet-Draft R. Stepanek 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 - draft-ietf-calext-jscalendar-01 + draft-ietf-calext-jscalendar-02 Abstract This specification defines a data model and JSON representation of calendar data that can be used for storage and data exchange in a calendaring and scheduling environment. It aims to be an alternative to the widely deployed iCalendar data format and to be unambiguous, extendable and simple to process. Status of This Memo @@ -23,21 +23,21 @@ Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference 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 (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents @@ -108,50 +108,50 @@ 5.1.5. status . . . . . . . . . . . . . . . . . . . . . . . 30 5.2. JSTask properties . . . . . . . . . . . . . . . . . . . . 30 5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2.3. timeZone . . . . . . . . . . . . . . . . . . . . . . 30 5.2.4. estimatedDuration . . . . . . . . . . . . . . . . . . 31 5.2.5. completed . . . . . . . . . . . . . . . . . . . . . . 31 5.2.6. isAllDay . . . . . . . . . . . . . . . . . . . . . . 31 5.2.7. progress . . . . . . . . . . . . . . . . . . . . . . 31 5.2.8. status . . . . . . . . . . . . . . . . . . . . . . . 32 - 5.3. JSGroup properties . . . . . . . . . . . . . . . . . . . 32 + 5.3. JSGroup properties . . . . . . . . . . . . . . . . . . . 33 5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 33 - 5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 33 - 6. Conversion from and to iCalendar . . . . . . . . . . . . . . 33 - 6.1. JSEvent . . . . . . . . . . . . . . . . . . . . . . . . . 33 - 6.2. JSTask . . . . . . . . . . . . . . . . . . . . . . . . . 34 - 6.3. JSGroup . . . . . . . . . . . . . . . . . . . . . . . . . 35 - 6.4. Common properties . . . . . . . . . . . . . . . . . . . . 36 - 6.5. Locations and participants . . . . . . . . . . . . . . . 38 - 6.6. Unknown properties . . . . . . . . . . . . . . . . . . . 40 - 7. JSCalendar object examples . . . . . . . . . . . . . . . . . 40 - 7.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 40 - 7.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 41 - 7.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 41 - 7.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 42 - 7.5. Task with a due date . . . . . . . . . . . . . . . . . . 42 - 7.6. Event with end time-zone . . . . . . . . . . . . . . . . 43 - 7.7. Floating-time event (with recurrence) . . . . . . . . . . 43 - 7.8. Event with multiple locations and localization . . . . . 44 - 7.9. Recurring event with overrides . . . . . . . . . . . . . 45 - 7.10. Recurring event with participants . . . . . . . . . . . . 46 - 8. Security Considerations . . . . . . . . . . . . . . . . . . . 47 - 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 - 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 47 - 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 47 - 11.1. Normative References . . . . . . . . . . . . . . . . . . 47 - 11.2. Informative References . . . . . . . . . . . . . . . . . 50 - 11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 50 + 5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 34 + 6. Conversion from and to iCalendar . . . . . . . . . . . . . . 34 + 6.1. JSEvent . . . . . . . . . . . . . . . . . . . . . . . . . 34 + 6.2. JSTask . . . . . . . . . . . . . . . . . . . . . . . . . 35 + 6.3. JSGroup . . . . . . . . . . . . . . . . . . . . . . . . . 37 + 6.4. Common properties . . . . . . . . . . . . . . . . . . . . 37 + 6.5. Locations and participants . . . . . . . . . . . . . . . 39 + 6.6. Unknown properties . . . . . . . . . . . . . . . . . . . 41 + 7. JSCalendar object examples . . . . . . . . . . . . . . . . . 41 + 7.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 41 + 7.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 42 + 7.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 42 + 7.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 43 + 7.5. Task with a due date . . . . . . . . . . . . . . . . . . 43 + 7.6. Event with end time-zone . . . . . . . . . . . . . . . . 44 + 7.7. Floating-time event (with recurrence) . . . . . . . . . . 44 + 7.8. Event with multiple locations and localization . . . . . 45 + 7.9. Recurring event with overrides . . . . . . . . . . . . . 46 + 7.10. Recurring event with participants . . . . . . . . . . . . 47 + 8. Security Considerations . . . . . . . . . . . . . . . . . . . 48 + 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 + 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 48 + 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 48 + 11.1. Normative References . . . . . . . . . . . . . . . . . . 48 + 11.2. Informative References . . . . . . . . . . . . . . . . . 51 + 11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 51 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 51 1. Introduction This document defines a data model for calendar event and task objects, or groups of such objects, in electronic calendar applications and systems. It aims to be unambiguous, extendable and simple to process. The key design considerations for this data model are as follows: @@ -1443,56 +1443,80 @@ All-day tasks MAY be bound to a specific time-zone, as defined by the *timeZone* property. 5.2.7. progress In addition to the common properties of a *Participant* object (Section 4.4.5), a Participant within a JSTask supports the following property: o *progress*: "ParticipantProgress|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: o *status*: "String" Describes the completion status of the participant's progress. The value MUST be at most one of the following values, registered 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. 5.2.8. status Type: "String" - The scheduling status (Section 4.4) of a JSTask defaults to "needs- - action" if omitted. + If omitted, the default scheduling status (Section 4.4) of a JSTask + 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: o "needs-action": Indicates the task needs action. o "completed": Indicates the task is completed. If this value is set, then the timestamp in the *completed* property MUST NOT be null. o "in-process": Indicates the task is in process. 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 JSGroup supports the following JSCalendar properties (Section 4): o @type o uid o created @@ -1603,21 +1628,28 @@ | | property and "rel="end"". | | | | | estimatedDuration | Corresponds to the ESTIMATED-DURATION | | | iCalendar property. *NON-STANDARD*: this | | | property is currently non-standard, see | | | [draft-apthorp-ical-tasks]. | | | | | completed | Maps to the COMPLETED iCalendar property. | | | | | 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 6.3. JSGroup A JSGroup converts to a iCalendar VCALENDAR containing VEVENT or VTODO components. +----------+--------------------------------------------------------+