draft-ietf-calext-jscalendar-02.txt | draft-ietf-calext-jscalendar-03.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 6, 2018 March 5, 2018 | Expires: November 10, 2018 May 9, 2018 | |||
JSCalendar: A JSON representation of calendar data | JSCalendar: A JSON representation of calendar data | |||
draft-ietf-calext-jscalendar-02 | draft-ietf-calext-jscalendar-03 | |||
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 6, 2018. | This Internet-Draft will expire on November 10, 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 2, line 17 ¶ | skipping to change at page 2, line 17 ¶ | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
1.1. Relation to the iCalendar format . . . . . . . . . . . . 4 | 1.1. Relation to the iCalendar format . . . . . . . . . . . . 4 | |||
1.2. Notational Conventions . . . . . . . . . . . . . . . . . 5 | 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 5 | |||
2. JSCalendar objects . . . . . . . . . . . . . . . . . . . . . 5 | 2. JSCalendar objects . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.1. JSEvent . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. JSEvent . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.2. JSTask . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. JSTask . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.3. JSGroup . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.3. JSGroup . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. Structure of JSCalendar objects . . . . . . . . . . . . . . . 6 | 3. Structure of JSCalendar objects . . . . . . . . . . . . . . . 6 | |||
3.1. Type signatures . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Type signatures . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.2. Data Types . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.2. Data Types . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.2.1. UTCDate . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2.1. UTCDate . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.2.2. LocalDate . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2.2. LocalDate . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.2.3. Duration . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2.3. Duration . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.2.4. PatchObject . . . . . . . . . . . . . . . . . . . . . 7 | 3.2.4. PatchObject . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.2.5. Normalisation and equivalence . . . . . . . . . . . . 8 | 3.2.5. Identifiers . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.2.6. Normalisation and equivalence . . . . . . . . . . . . 8 | ||||
3.3. Custom property extensions and values . . . . . . . . . . 9 | 3.3. Custom property extensions and values . . . . . . . . . . 9 | |||
4. Common JSCalendar properties . . . . . . . . . . . . . . . . 9 | 4. Common JSCalendar properties . . . . . . . . . . . . . . . . 9 | |||
4.1. Metadata properties . . . . . . . . . . . . . . . . . . . 9 | 4.1. Metadata properties . . . . . . . . . . . . . . . . . . . 9 | |||
4.1.1. @type . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4.1.1. @type . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.1.2. uid . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.1.2. uid . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1.3. relatedTo . . . . . . . . . . . . . . . . . . . . . . 10 | 4.1.3. relatedTo . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1.4. prodId . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.1.4. prodId . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.1.5. created . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.1.5. created . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.1.6. updated . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.1.6. updated . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.1.7. sequence . . . . . . . . . . . . . . . . . . . . . . 11 | 4.1.7. sequence . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.1.8. method . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.1.8. method . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.2. What and where properties . . . . . . . . . . . . . . . . 11 | 4.2. What and where properties . . . . . . . . . . . . . . . . 12 | |||
4.2.1. title . . . . . . . . . . . . . . . . . . . . . . . . 12 | 4.2.1. title . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
4.2.2. description . . . . . . . . . . . . . . . . . . . . . 12 | 4.2.2. description . . . . . . . . . . . . . . . . . . . . . 12 | |||
4.2.3. htmlDescription . . . . . . . . . . . . . . . . . . . 12 | 4.2.3. htmlDescription . . . . . . . . . . . . . . . . . . . 12 | |||
4.2.4. locations . . . . . . . . . . . . . . . . . . . . . . 12 | 4.2.4. locations . . . . . . . . . . . . . . . . . . . . . . 12 | |||
4.2.5. links . . . . . . . . . . . . . . . . . . . . . . . . 14 | 4.2.5. links . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
4.2.6. locale . . . . . . . . . . . . . . . . . . . . . . . 15 | 4.2.6. locale . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
4.2.7. keywords . . . . . . . . . . . . . . . . . . . . . . 15 | 4.2.7. keywords . . . . . . . . . . . . . . . . . . . . . . 16 | |||
4.2.8. categories . . . . . . . . . . . . . . . . . . . . . 16 | 4.2.8. categories . . . . . . . . . . . . . . . . . . . . . 16 | |||
4.2.9. color . . . . . . . . . . . . . . . . . . . . . . . . 16 | 4.2.9. color . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
4.3. Recurrence properties . . . . . . . . . . . . . . . . . . 16 | 4.3. Recurrence properties . . . . . . . . . . . . . . . . . . 16 | |||
4.3.1. recurrenceRule . . . . . . . . . . . . . . . . . . . 16 | 4.3.1. recurrenceRule . . . . . . . . . . . . . . . . . . . 16 | |||
4.3.2. recurrenceOverrides . . . . . . . . . . . . . . . . . 18 | 4.3.2. recurrenceOverrides . . . . . . . . . . . . . . . . . 18 | |||
4.4. Sharing and scheduling properties . . . . . . . . . . . . 19 | 4.4. Sharing and scheduling properties . . . . . . . . . . . . 19 | |||
4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 19 | 4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 19 | |||
4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 19 | 4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 19 | |||
4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 20 | 4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 21 | 4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
skipping to change at page 2, line 52 ¶ | skipping to change at page 3, line 4 ¶ | |||
4.2.9. color . . . . . . . . . . . . . . . . . . . . . . . . 16 | 4.2.9. color . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
4.3. Recurrence properties . . . . . . . . . . . . . . . . . . 16 | 4.3. Recurrence properties . . . . . . . . . . . . . . . . . . 16 | |||
4.3.1. recurrenceRule . . . . . . . . . . . . . . . . . . . 16 | 4.3.1. recurrenceRule . . . . . . . . . . . . . . . . . . . 16 | |||
4.3.2. recurrenceOverrides . . . . . . . . . . . . . . . . . 18 | 4.3.2. recurrenceOverrides . . . . . . . . . . . . . . . . . 18 | |||
4.4. Sharing and scheduling properties . . . . . . . . . . . . 19 | 4.4. Sharing and scheduling properties . . . . . . . . . . . . 19 | |||
4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 19 | 4.4.1. priority . . . . . . . . . . . . . . . . . . . . . . 19 | |||
4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 19 | 4.4.2. freeBusyStatus . . . . . . . . . . . . . . . . . . . 19 | |||
4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 20 | 4.4.3. privacy . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 21 | 4.4.4. replyTo . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
4.4.5. participants . . . . . . . . . . . . . . . . . . . . 22 | 4.4.5. participants . . . . . . . . . . . . . . . . . . . . 22 | |||
4.5. Alerts properties . . . . . . . . . . . . . . . . . . . . 25 | 4.5. Alerts properties . . . . . . . . . . . . . . . . . . . . 25 | |||
4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 25 | 4.5.1. useDefaultAlerts . . . . . . . . . . . . . . . . . . 25 | |||
4.5.2. alerts . . . . . . . . . . . . . . . . . . . . . . . 25 | 4.5.2. alerts . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
4.6. Multilingual properties . . . . . . . . . . . . . . . . . 28 | 5. Type-specific JSCalendar properties . . . . . . . . . . . . . 28 | |||
4.6.1. localizations . . . . . . . . . . . . . . . . . . . . 28 | 5.1. JSEvent properties . . . . . . . . . . . . . . . . . . . 28 | |||
5. Type-specific JSCalendar properties . . . . . . . . . . . . . 29 | 5.1.1. start . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
5.1. JSEvent properties . . . . . . . . . . . . . . . . . . . 29 | 5.1.2. timeZone . . . . . . . . . . . . . . . . . . . . . . 28 | |||
5.1.1. start . . . . . . . . . . . . . . . . . . . . . . . . 29 | 5.1.3. duration . . . . . . . . . . . . . . . . . . . . . . 28 | |||
5.1.2. timeZone . . . . . . . . . . . . . . . . . . . . . . 29 | ||||
5.1.3. duration . . . . . . . . . . . . . . . . . . . . . . 29 | ||||
5.1.4. isAllDay . . . . . . . . . . . . . . . . . . . . . . 29 | 5.1.4. isAllDay . . . . . . . . . . . . . . . . . . . . . . 29 | |||
5.1.5. status . . . . . . . . . . . . . . . . . . . . . . . 30 | 5.1.5. status . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
5.2. JSTask properties . . . . . . . . . . . . . . . . . . . . 30 | 5.2. JSTask properties . . . . . . . . . . . . . . . . . . . . 29 | |||
5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 5.2.1. due . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 30 | 5.2.2. start . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
5.2.3. timeZone . . . . . . . . . . . . . . . . . . . . . . 30 | 5.2.3. timeZone . . . . . . . . . . . . . . . . . . . . . . 30 | |||
5.2.4. estimatedDuration . . . . . . . . . . . . . . . . . . 31 | 5.2.4. estimatedDuration . . . . . . . . . . . . . . . . . . 30 | |||
5.2.5. completed . . . . . . . . . . . . . . . . . . . . . . 31 | 5.2.5. completed . . . . . . . . . . . . . . . . . . . . . . 30 | |||
5.2.6. isAllDay . . . . . . . . . . . . . . . . . . . . . . 31 | 5.2.6. isAllDay . . . . . . . . . . . . . . . . . . . . . . 30 | |||
5.2.7. progress . . . . . . . . . . . . . . . . . . . . . . 31 | 5.2.7. progress . . . . . . . . . . . . . . . . . . . . . . 31 | |||
5.2.8. status . . . . . . . . . . . . . . . . . . . . . . . 32 | 5.2.8. status . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
5.3. JSGroup properties . . . . . . . . . . . . . . . . . . . 33 | 5.3. JSGroup properties . . . . . . . . . . . . . . . . . . . 32 | |||
5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 33 | 5.3.1. entries . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 34 | 5.3.2. source . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
6. Conversion from and to iCalendar . . . . . . . . . . . . . . 34 | 6. Conversion from and to iCalendar . . . . . . . . . . . . . . 33 | |||
6.1. JSEvent . . . . . . . . . . . . . . . . . . . . . . . . . 34 | 6.1. JSEvent . . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
6.2. JSTask . . . . . . . . . . . . . . . . . . . . . . . . . 35 | 6.2. JSTask . . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
6.3. JSGroup . . . . . . . . . . . . . . . . . . . . . . . . . 37 | 6.3. JSGroup . . . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
6.4. Common properties . . . . . . . . . . . . . . . . . . . . 37 | 6.4. Common properties . . . . . . . . . . . . . . . . . . . . 36 | |||
6.5. Locations and participants . . . . . . . . . . . . . . . 39 | 6.5. Locations and participants . . . . . . . . . . . . . . . 38 | |||
6.6. Unknown properties . . . . . . . . . . . . . . . . . . . 41 | 6.6. Unknown properties . . . . . . . . . . . . . . . . . . . 41 | |||
7. JSCalendar object examples . . . . . . . . . . . . . . . . . 41 | 7. JSCalendar object examples . . . . . . . . . . . . . . . . . 42 | |||
7.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 41 | 7.1. Simple event . . . . . . . . . . . . . . . . . . . . . . 42 | |||
7.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 42 | 7.2. Simple task . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
7.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 42 | 7.3. Simple group . . . . . . . . . . . . . . . . . . . . . . 42 | |||
7.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 43 | 7.4. All-day event . . . . . . . . . . . . . . . . . . . . . . 43 | |||
7.5. Task with a due date . . . . . . . . . . . . . . . . . . 43 | 7.5. Task with a due date . . . . . . . . . . . . . . . . . . 43 | |||
7.6. Event with end time-zone . . . . . . . . . . . . . . . . 44 | 7.6. Event with end time-zone . . . . . . . . . . . . . . . . 44 | |||
7.7. Floating-time event (with recurrence) . . . . . . . . . . 44 | 7.7. Floating-time event (with recurrence) . . . . . . . . . . 44 | |||
7.8. Event with multiple locations and localization . . . . . 45 | 7.8. Event with multiple locations . . . . . . . . . . . . . . 45 | |||
7.9. Recurring event with overrides . . . . . . . . . . . . . 46 | 7.9. Recurring event with overrides . . . . . . . . . . . . . 45 | |||
7.10. Recurring event with participants . . . . . . . . . . . . 47 | 7.10. Recurring event with participants . . . . . . . . . . . . 46 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 48 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 48 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | |||
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 48 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 48 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 48 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 48 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 51 | 11.2. Informative References . . . . . . . . . . . . . . . . . 50 | |||
11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 51 | 11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 51 | 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 8, line 33 ¶ | skipping to change at page 8, line 28 ¶ | |||
o "null": Remove the property from the patched object. If not | o "null": Remove the property from the patched object. If not | |||
present in the parent, this a no-op. | present in the parent, this a no-op. | |||
o Anything else: The value to replace the inherited property on the | o Anything else: The value to replace the inherited property on the | |||
patch object with (if present) or add to the property (if not | patch object with (if present) or add to the property (if not | |||
present). | present). | |||
Implementations MUST reject a PatchObject if any of its patches are | Implementations MUST reject a PatchObject if any of its patches are | |||
invalid. | invalid. | |||
3.2.5. Normalisation and equivalence | 3.2.5. Identifiers | |||
If not noted otherwise, properties that define identifiers MUST be | ||||
string values, MUST be at least 1 character in length and maximum 256 | ||||
octets in size, and MUST only contain characters from the "URL and | ||||
Filename safe" Base 64 Alphabet, as defined in section 5 of | ||||
[RFC4648]. This is the ASCII alphanumeric characters (A-Za-z0-9), | ||||
hyphen (-), and underscore (_). | ||||
3.2.6. Normalisation and equivalence | ||||
JSCalendar aims to provide unambiguous definitions for value types | JSCalendar aims to provide unambiguous definitions for value types | |||
and properties, but does not define a general normalisation or | and properties, but does not define a general normalisation or | |||
equivalence method for JSCalendar objects and types. This is because | equivalence method for JSCalendar objects and types. This is because | |||
the notion of equivalence might range from byte-level equivalence to | the notion of equivalence might range from byte-level equivalence to | |||
semantic equivalence, depending on the respective use case (for | semantic equivalence, depending on the respective use case (for | |||
example, the CalDAV protocol [RFC4791] requires octet equivalence of | example, the CalDAV protocol [RFC4791] requires octet equivalence of | |||
the encoded calendar object to determine ETag equivalence). | the encoded calendar object to determine ETag equivalence). | |||
Normalisation of JSCalendar objects is hindered because of the | Normalisation of JSCalendar objects is hindered because of the | |||
skipping to change at page 10, line 17 ¶ | skipping to change at page 10, line 17 ¶ | |||
Type: "String" | Type: "String" | |||
A globally unique identifier, used to associate the object as the | A globally unique identifier, used to associate the object as the | |||
same across different systems, calendars and views. The value of | same across different systems, calendars and views. The value of | |||
this property MUST be unique across _all_ JSCalendar objects, even if | this property MUST be unique across _all_ JSCalendar objects, even if | |||
they are of different type. [RFC4122] describes a range of | they are of different type. [RFC4122] describes a range of | |||
established algorithms to generate universally unique identifiers | established algorithms to generate universally unique identifiers | |||
(UUID), and the random or pseudo-random version is recommended to | (UUID), and the random or pseudo-random version is recommended to | |||
use. | use. | |||
For compatibility with [RFC5545] UIDs, implementations MUST be able | ||||
to receive and persist values of at least 255 octets for this | ||||
property, but they MUST NOT truncate values in the middle of a UTF-8 | ||||
multi-octet sequence. | ||||
A valid JSCalendar object MUST include this property. | A valid JSCalendar object MUST include this property. | |||
4.1.3. relatedTo | 4.1.3. relatedTo | |||
Type: "String[Relation]|null" | Type: "String[Relation]|null" | |||
Relates the object to other JSCalendar objects. This is represented | Relates the object to other JSCalendar objects. This is represented | |||
as a map of the uids of the related objects to information about the | as a map of the uids of the related objects to information about the | |||
relation. | relation. | |||
skipping to change at page 11, line 16 ¶ | skipping to change at page 11, line 19 ¶ | |||
if the user wishes to modify them all at once. | if the user wishes to modify them all at once. | |||
4.1.4. prodId | 4.1.4. prodId | |||
Type: "String|null" | Type: "String|null" | |||
The identifier for the product that created the JSCalendar object. | The identifier for the product that created the JSCalendar object. | |||
The vendor of the implementation SHOULD ensure that this is a | The vendor of the implementation SHOULD ensure that this is a | |||
globally unique identifier, using some technique such as an FPI | globally unique identifier, using some technique such as an FPI | |||
value, as defined in [ISO.9070.1991]. | value, as defined in [ISO.9070.1991]. It MUST only use characters of | |||
an iCalendar TEXT data value (see section 3.3.11 in [RFC5545]). | ||||
This property SHOULD NOT be used to alter the interpretation of an | This property SHOULD NOT be used to alter the interpretation of an | |||
JSCalendar object beyond the semantics specified in this document. | JSCalendar object beyond the semantics specified in this document. | |||
For example, it is not to be used to further the understanding of | For example, it is not to be used to further the understanding of | |||
non-standard properties. | non-standard properties. | |||
4.1.5. created | 4.1.5. created | |||
Type: "UTCDate|null" | Type: "UTCDate|null" | |||
skipping to change at page 12, line 19 ¶ | skipping to change at page 12, line 22 ¶ | |||
4.2.2. description | 4.2.2. description | |||
Type: "String" (Defaults to the empty string if omitted) | Type: "String" (Defaults to the empty string if omitted) | |||
A longer form description of the object. This is plain text, but a | A longer form description of the object. This is plain text, but a | |||
client SHOULD attempt to hyperlink URLs when displaying it. | client SHOULD attempt to hyperlink URLs when displaying it. | |||
4.2.3. htmlDescription | 4.2.3. htmlDescription | |||
Type: "String" (Defaults to the empty string if omitted) | Type: "String|null" (Defaults to null if omitted) | |||
A longer form rich-text description of the object. This is HTML text | A longer form rich-text description of the object. This is HTML text | |||
[1] and allows to reference resources in the *links* property by use | [1] and allows to reference resources in the *links* property by use | |||
of CID URLs (see [RFC2392]). To convert a CID URL to the *cid* | of CID URLs (see [RFC2392]). To convert a CID URL to the *cid* | |||
property value of a *Link* object, implementations MUST follow the | property value of a *Link* object, implementations MUST follow the | |||
conversion described in section 2 of [RFC2392]. Implementations MAY | conversion described in section 2 of [RFC2392]. Implementations MAY | |||
choose not to follow untrusted external CID URLs referenced in the | choose not to follow untrusted external CID URLs referenced in the | |||
*links* property, in which case they MUST treat the *htmlDescription* | *links* property, in which case they MUST treat the *htmlDescription* | |||
property as if omitted. Implementations MUST preserve the value of | property as if omitted. Implementations MUST preserve the value of | |||
this property, even if it contains untrusted links. | this property, even if it contains untrusted links. | |||
4.2.4. locations | 4.2.4. locations | |||
Type: "String[Location]|null" | Type: "String[Location]|null" | |||
A map of location ids to Location objects, representing locations | A map of location ids to Location objects, representing locations | |||
associated with the object. A location id may be any string and need | associated with the object. A location id may be any valid [RFC6901] | |||
only be unique to this object, although a UUID is a practical choice. | JSON pointer and need only be unique to this object; a UUID is a | |||
practical choice. | ||||
A *Location* object has the following properties. All properties are | A *Location* object has the following properties. All properties are | |||
optional, but every Location object MUST have at least one property: | optional, but every Location object MUST have at least one property: | |||
o *name*: "String" The human-readable name of the location. | o *name*: "String" (Defaults to the empty string if omitted) The | |||
human-readable name of the location. | ||||
o *description*: "String" Human-readable instructions for accessing | o *description*: "String|null" Human-readable instructions for | |||
this location. This may be an address, set of directions, door | accessing this location. This may be an address, set of | |||
access code, etc. | directions, door access code, etc. | |||
o *rel*: "String" The relation type of this location to the | o *rel*: "String" (Defaults to "unknown" if omitted) The relation | |||
JSCalendar object. | type of this location to the JSCalendar object. | |||
This MUST be either one of the following values, registered in a | This MUST be either one of the following values, registered in a | |||
future RFC, or a vendor-specific value. Any value the client or | future RFC, or a vendor-specific value. Any value the client or | |||
server doesn't understand should be treated the same as "unknown". | server doesn't understand should be treated the same as "unknown". | |||
* "start": The JSCalendar object starts at this location. | * "start": The JSCalendar object starts at this location. | |||
* "end": The JSCalendar object ends at this location. | * "end": The JSCalendar object ends at this location. | |||
* "virtual": This is not a physical location (e.g. this location | * "virtual": This is not a physical location (e.g. this location | |||
skipping to change at page 13, line 33 ¶ | skipping to change at page 13, line 36 ¶ | |||
values, registered in a future RFC, or a vendor-specific value. | values, registered in a future RFC, or a vendor-specific value. | |||
Any value the client or server doesn't understand should be | Any value the client or server doesn't understand should be | |||
ignored, but preserved. | ignored, but preserved. | |||
The features supported by locations with rel-type "virtual" are: | The features supported by locations with rel-type "virtual" are: | |||
* "audio": audio conferencing | * "audio": audio conferencing | |||
* "chat": chat or instant messaging | * "chat": chat or instant messaging | |||
* "feed": blog or atom feed | ||||
* "moderator": provides moderator-specific features | ||||
* "phone": phone conferencing | ||||
* "screen": screen sharing | * "screen": screen sharing | |||
* "video": video conferencing | * "video": video conferencing | |||
* any vendor-prefixed custom value | * any vendor-prefixed custom value | |||
o *timeZone*: "String|null" (Defaults to "null" if omitted) A time- | o *timeZone*: "String|null" (Defaults to "null" if omitted) A time- | |||
zone for this location. | zone for this location. | |||
If "null", the *timeZone* from the JSCalendar object MUST be | If "null", the *timeZone* from the JSCalendar object MUST be | |||
presumed when a time-zone is needed in relation to this location. | presumed when a time-zone is needed in relation to this location. | |||
o *coordinates*: "String" An [RFC5870] "geo:" URI for the location. | o *coordinates*: "String|null" An [RFC5870] "geo:" URI for the | |||
location. | ||||
o *uri*: "String" A URI that represents how to connect to this | o *uri*: "String|null" A URI that represents how to connect to this | |||
location. | location. | |||
This may be a telephone number (represented as | This may be a telephone number (represented as | |||
"tel:+1-555-555-555") for a teleconference, a web address for | "tel:+1-555-555-555") for a teleconference, a web address for | |||
online chat, or any custom URI. | online chat, or any custom URI. | |||
o *linkIds*: "String[]|null" A list of ids for links to alternate | o *linkIds*: "String[]|null" A list of ids for links to alternate | |||
representations of this location. | representations of this location. | |||
For example, an alternative representation could be in vCard | For example, an alternative representation could be in vCard | |||
format. If a given value does not correspond to any link id in | format. | |||
the links property of the instance, this MUST be ignored. | ||||
4.2.5. links | 4.2.5. links | |||
Type: "String[Link]|null" | Type: "String[Link]|null" | |||
A map of link ids to Link objects, representing external resources | A map of link ids to Link objects, representing external resources | |||
associated with the object. A link id may be any string and need | associated with the object. A link id may be any valid [RFC6901] | |||
only be unique to this object, although the href or a UUID are | JSON pointer and need only be unique to this object; the href or a | |||
practical choices. | UUID are practical choices. | |||
A *Link* object has the following properties: | A *Link* object has the following properties: | |||
o *href*: "String" A URI from which the resource may be fetched. | o *href*: "String" A URI from which the resource may be fetched. | |||
This MAY be a "data:" URL, but it is recommended that the file be | This MAY be a "data:" URL, but it is recommended that the file be | |||
hosted on a server to avoid embedding arbitrary large data in | hosted on a server to avoid embedding arbitrary large data in | |||
JSCalendar object instances. | JSCalendar object instances. | |||
o *cid* "String|null" The id used within the *htmlDescription* | o *cid* "String|null" The id used within the *htmlDescription* | |||
property to reference this link. | property to reference this link. | |||
If not null, this MUST be a valid Content-ID MIME header value | If not null, this MUST be a valid Content-ID MIME header value | |||
(see [RFC2392]). The identifier MUST be unique within this | without CFWS and angle brackets (see [RFC2392]). The identifier | |||
JSCalendar object but has no meaning beyond that. Specifically, | MUST be unique within this JSCalendar object but has no meaning | |||
it MAY be different from the *Link* object identifier in the | beyond that. Specifically, it MAY be different from the *Link* | |||
enclosing *links* property. | object identifier in the enclosing *links* property. | |||
o *type*: "String|null"(optional, defaults to "null") The content- | o *type*: "String|null"(optional, defaults to "null") The content- | |||
type [RFC6838] of the resource, if known. | type [RFC6838] of the resource, if known. | |||
o *size*: "Number|null"(optional, defaults to "null") The size, in | o *size*: "Number|null"(optional, defaults to "null") The size, in | |||
bytes, of the resource when fully decoded (i.e. the number of | bytes, of the resource when fully decoded (i.e. the number of | |||
bytes in the file the user would download), if known. | bytes in the file the user would download), if known. | |||
o *rel*: "String"(optional, defaults to "related") Identifies the | o *rel*: "String"(optional, defaults to "related") Identifies the | |||
relation of the linked resource to the object. The value MUST be | relation of the linked resource to the object. The value MUST be | |||
skipping to change at page 20, line 46 ¶ | skipping to change at page 21, line 4 ¶ | |||
* description | * description | |||
* htmlDescription | * htmlDescription | |||
* locations | * locations | |||
* links | * links | |||
* locale | * locale | |||
* localizations | ||||
* participants | * participants | |||
* replyTo | * replyTo | |||
In addition, any patches in "recurrenceOverrides" whose key is | In addition, any patches in "recurrenceOverrides" whose key is | |||
prefixed with one of the above properties MUST be stripped. | prefixed with one of the above properties MUST be stripped. | |||
o "secret": The object is hidden completely (as though it did not | o "secret": The object is hidden completely (as though it did not | |||
exist) when the calendar is shared. | exist) when the calendar is shared. | |||
4.4.4. replyTo | 4.4.4. replyTo | |||
Type: "String[String]|null" | Type: "String[String]|null" | |||
skipping to change at page 22, line 31 ¶ | skipping to change at page 22, line 31 ¶ | |||
+--------------+----------------------------------------------------+ | +--------------+----------------------------------------------------+ | |||
Table 1: replyTo URI Template variables | Table 1: replyTo URI Template variables | |||
4.4.5. participants | 4.4.5. participants | |||
Type: "String[Participant]|null" | Type: "String[Participant]|null" | |||
A map of participant ids to participants, describing their | A map of participant ids to participants, describing their | |||
participation in the calendar object. A participant id may be any | participation in the calendar object. A participant id may be any | |||
string and need only be unique to this calendar object; the email | valid [RFC6901] JSON pointer and need only be unique to this calendar | |||
address of the participant is a good choice. | object; the email address of the participant is a good choice. | |||
A *Participant* object has the following properties. Properties are | A *Participant* object has the following properties. Properties are | |||
mandatory unless marked otherwise: | mandatory unless marked otherwise: | |||
o *name*: "String" The display name of the participant (e.g. "Joe | o *name*: "String" The display name of the participant (e.g. "Joe | |||
Bloggs"). | Bloggs"). | |||
o *email*: "String" The email address for the participant. | o *email*: "String" The email address for the participant. | |||
o *kind*: "String"(optional, defaults to "unknown") What kind of | o *kind*: "String"(optional, defaults to "unknown") What kind of | |||
skipping to change at page 25, line 13 ¶ | skipping to change at page 25, line 13 ¶ | |||
array). | array). | |||
o *memberOf*: "String[]|null"(optional, defaults to "null") A list | o *memberOf*: "String[]|null"(optional, defaults to "null") A list | |||
of group participants that were invited to this calendar object, | of group participants that were invited to this calendar object, | |||
which caused this participant to be invited due to their | which caused this participant to be invited due to their | |||
membership of the group(s). This MUST be omitted if none (rather | membership of the group(s). This MUST be omitted if none (rather | |||
than an empty array). | than an empty array). | |||
o *linkIds*: "String[]|null"(optional, defaults to "null") Links to | o *linkIds*: "String[]|null"(optional, defaults to "null") Links to | |||
more information about this participant, for example in vCard | more information about this participant, for example in vCard | |||
format. If a given value does not correspond to any link id in | format. | |||
the links property of the instance, this id MUST be ignored. This | ||||
MUST be omitted if none (rather than an empty array). | ||||
4.5. Alerts properties | 4.5. Alerts properties | |||
4.5.1. useDefaultAlerts | 4.5.1. useDefaultAlerts | |||
Type: "Boolean" (defaults to "false" if omitted) | Type: "Boolean" (defaults to "false" if omitted) | |||
If "true", use the user's default alerts and ignore the value of the | If "true", use the user's default alerts and ignore the value of the | |||
*alerts* property. Fetching user defaults is dependent on the API | *alerts* property. Fetching user defaults is dependent on the API | |||
from which this JSCalendar object is being fetched, and is not | from which this JSCalendar object is being fetched, and is not | |||
defined in this specification. If an implementation cannot determine | defined in this specification. If an implementation cannot determine | |||
the user's default alerts, or none are set, it MUST process the | the user's default alerts, or none are set, it MUST process the | |||
alerts property as if useDefaultAlerts is set to "false". | alerts property as if useDefaultAlerts is set to "false". | |||
4.5.2. alerts | 4.5.2. alerts | |||
Type: "String[Alert]|null" | Type: "String[Alert]|null" | |||
A map of alert ids to Alert objects, representing alerts/reminders to | A map of alert ids to Alert objects, representing alerts/reminders to | |||
display or send the user for this calendar object. An alert id may | display or send the user for this calendar object. An alert id may | |||
be any string and need only be unique to this calendar object, | be any valid [RFC6901] JSON pointer and need only be unique to this | |||
although a globally unique id is a practical choice (also see | calendar object; a globally unique id is a practical choice (also see | |||
Section 4.1.2)). | Section 4.1.2)). | |||
An *Alert* Object has the following properties: | An *Alert* Object has the following properties: | |||
o *relativeTo*: "String" (optional, defaults to "before-start") | o *relativeTo*: "String" (optional, defaults to "before-start") | |||
Specifies where the offset is relative to for the alarm to | Specifies where the offset is relative to for the alarm to | |||
trigger. The value MUST be one of: | trigger. The value MUST be one of: | |||
* "before-start" | * "before-start" | |||
skipping to change at page 26, line 51 ¶ | skipping to change at page 26, line 51 ¶ | |||
a time in the future. When that time is reached, the alert | a time in the future. When that time is reached, the alert | |||
SHOULD be reshown unless acknowledged is now after the original | SHOULD be reshown unless acknowledged is now after the original | |||
trigger time. | trigger time. | |||
Setting this property on an instance of a recurring calendar | Setting this property on an instance of a recurring calendar | |||
object MUST update the alarm on the master object, unless the | object MUST update the alarm on the master object, unless the | |||
respective instance already is defined in | respective instance already is defined in | |||
"recurrenceOverrides". It MUST NOT generate an override for | "recurrenceOverrides". It MUST NOT generate an override for | |||
the sole use of snoozing an alarm. | the sole use of snoozing an alarm. | |||
* *mediaLinkIds*: "String[]|null " (optional) | * *mediaLinks*: "String[Link]|null " (optional) | |||
A list of link identifiers in the JSCalendar object *links* | A map of link identifiers to links (see Section 4.2.5) that | |||
property. Clients SHOULD play one or more of the link contents | contain media to display with this alert. Clients SHOULD play | |||
that are supported by the client implementation and are | one or more of the link contents that are supported by the | |||
appropriate for the given device and user context. | client implementation and are appropriate for the given device | |||
and user context. | ||||
An *EmailAction* means an email SHOULD be sent as specified in the | An *EmailAction* means an email SHOULD be sent as specified in the | |||
object at the specified time. It has the following properties: | object at the specified time. It has the following properties: | |||
* *type*: "String" The value MUST be "email". | * *type*: "String" The value MUST be "email". | |||
* *to*: "Emailer[]" An array of name/email objects to send the | * *to*: "Emailer[]" An array of name/email objects to send the | |||
alert to. | alert to. | |||
An *Emailer* object has the following properties: | An *Emailer* object has the following properties: | |||
skipping to change at page 27, line 45 ¶ | skipping to change at page 27, line 46 ¶ | |||
* *htmlBody*: "String" (optional) The HTML body to use for the | * *htmlBody*: "String" (optional) The HTML body to use for the | |||
email, with rich-media content processed as for the | email, with rich-media content processed as for the | |||
*htmlDescription* property of the JSCalendar object (see | *htmlDescription* property of the JSCalendar object (see | |||
Section 4.2.3), e.g. all CID URLs MUST be embedded in the | Section 4.2.3), e.g. all CID URLs MUST be embedded in the | |||
generated alert email HTML body, or the *htmlBody* property | generated alert email HTML body, or the *htmlBody* property | |||
ignored completely. If the textBody property of this alert | ignored completely. If the textBody property of this alert | |||
action is not set, the server SHOULD generate a plain-text | action is not set, the server SHOULD generate a plain-text | |||
version from the HTML body and include it in a "multipart/ | version from the HTML body and include it in a "multipart/ | |||
alternative" MIME message. | alternative" MIME message. | |||
* *attachments*: "String[]|null" (optional) A list of link | * *attachments*: "String[Link]|null" (optional) A map of link | |||
identifiers in the JSCalendar object links property. Included | identifiers to links (see Section 4.2.5). Included attachments | |||
attachments SHOULD be embedded in the MIME message with the | SHOULD be embedded in the MIME message with the "Content- | |||
"Content-Disposition" header value set to "attachment" (see | Disposition" header value set to "attachment" (see [RFC2183]). | |||
[RFC2183]). Implementations MAY refuse to include one or more | Implementations MAY refuse to include one or more attachments | |||
attachments when building an alert email, in which case they | when building an alert email, in which case they MUST ignore | |||
MUST ignore the contents of the *attachments* property (e.g. | the contents of the *attachments* property (e.g. they MUST NOT | |||
they MUST NOT include a subset of attachments). | include a subset of attachments). | |||
An *UnknownAction* object is an object that contains a *type * | An *UnknownAction* object is an object that contains a *type * | |||
property whose value is not "email" or "string", plus zero or more | property whose value is not "email" or "string", plus zero or more | |||
other properties. This is for compatibility with client | other properties. This is for compatibility with client | |||
extensions and future RFCs. The client or server SHOULD NOT | extensions and future RFCs. The client or server SHOULD NOT | |||
trigger any type of alert for action types they do not understand, | trigger any type of alert for action types they do not understand, | |||
but MUST preserve them. | but MUST preserve them. | |||
4.6. Multilingual properties | ||||
4.6.1. localizations | ||||
Type: "String[PatchObject]|null" | ||||
A map of [RFC5646] language tags to patch objects, which localise the | ||||
calendar object into the locale of the respective language tag. | ||||
See the description of PatchObject (Section 3.2.4) for the structure | ||||
of the PatchObject. The patches are applied to the top-level object | ||||
and MUST only patch the following properties: | ||||
o title | ||||
o description | ||||
o htmlDescription | ||||
o keywords | ||||
o Location name | ||||
o Location description | ||||
o Link title | ||||
o EmailAction alert subject | ||||
o EmailAction alert textBody | ||||
o EmailAction alert htmlBody | ||||
o any Link properties entry except the "display" field | ||||
o any UnknownAction alert property except the "type" field | ||||
o any unknown or vendor-specific property (if not defined otherwise | ||||
in a future RFC or vendor-specific extension). | ||||
5. Type-specific JSCalendar properties | 5. Type-specific JSCalendar properties | |||
5.1. JSEvent properties | 5.1. JSEvent properties | |||
In addition to the common JSCalendar object properties (Section 4) a | In addition to the common JSCalendar object properties (Section 4) a | |||
JSEvent has the following properties: | JSEvent has the following properties: | |||
5.1.1. start | 5.1.1. start | |||
Type: "LocalDate" e.g. "2015-09-02T00:00:00" | Type: "LocalDate" e.g. "2015-09-02T00:00:00" | |||
skipping to change at page 37, line 29 ¶ | skipping to change at page 36, line 29 ¶ | |||
Table 4: Translation between JSGroup and iCalendar | Table 4: Translation between JSGroup and iCalendar | |||
6.4. Common properties | 6.4. Common properties | |||
+---------------------+---------------------------------------------+ | +---------------------+---------------------------------------------+ | |||
| Property | iCalendar counterpart | | | Property | iCalendar counterpart | | |||
+---------------------+---------------------------------------------+ | +---------------------+---------------------------------------------+ | |||
| alerts | An *Alert* corresponds to the VALARM | | | alerts | An *Alert* corresponds to the VALARM | | |||
| | component in iCalendar, where the *action* | | | | component in iCalendar, where the *action* | | |||
| | is determined by the iCalendar ACTION | | | | is determined by the iCalendar ACTION | | |||
| | property value (e.g., a "DISPLAY" property | | | | property value (e.g., both "DISPLAY" and | | |||
| | indicates that the JSCalendar Alert action | | | | "AUDIO" actions map to a JSCalendar | | |||
| | is a *DisplayAction* and similarly an | | | | *DisplayAction* alert, and similarly for an | | |||
| | iCalendar "EMAIL" value for *EmailAction* | | | | iCalendar "EMAIL"). The *relativeTo* and | | |||
| | action). The *relativeTo* and *offset* | | | | *offset* properties corresponds to the | | |||
| | properties corresponds to the iCalendar | | | | iCalendar TRIGGER property. The | | |||
| | TRIGGER property. *NON-STANDARD*: The | | | | *attachments* property of an *EmailAction* | | |||
| | iCalendar properties for JSCalendar Alert | | | | alert map to iCalendar ATTACH properties. | | |||
| | actions are non-standard, see | | | | For mapping *mediaLinks*, the iCalendar | | |||
| | [draft-daboo-valarm-extensions]. | | | | currently forbids to define ATTACH | | |||
| | properties on VALARMs with DISPLAY action. | | ||||
| | Mapping this property is implementation- | | ||||
| | specific, but using "X-ATTACH" with the | | ||||
| | same semantics as ATTACH is a sane choice. | | ||||
| | | | | | | | |||
| categories | Corresponds to the STRUCTURED-CATEGORY | | | categories | Corresponds to the STRUCTURED-CATEGORY | | |||
| | property in iCalendar, see. *NON- | | | | property in iCalendar, see. *NON- | | |||
| | STANDARD*: this property is currently non- | | | | STANDARD*: this property is currently non- | | |||
| | standard, see | | | | standard, see | | |||
| | [draft-ietf-calext-ical-relations]. | | | | [draft-ietf-calext-ical-relations]. | | |||
| | | | | | | | |||
| color | Corresponds to the COLOR property in | | | color | Corresponds to the COLOR property in | | |||
| | iCalendar, as specified in [RFC7986]. | | | | iCalendar, as specified in [RFC7986]. | | |||
| | | | | | | | |||
| created | Corresponds to the CREATED property in | | | created | Corresponds to the CREATED property in | | |||
| | iCalendar. | | | | iCalendar. | | |||
| | | | | | | | |||
| description | Corresponds to the DESCRIPTION property in | | | description | Corresponds to the DESCRIPTION property in | | |||
| | iCalendar. | | | | iCalendar. | | |||
| | | | | | | | |||
| htmlDescription | There is no direct equivalent in iCalendar. | | | htmlDescription | Corresponds to the ALTREP parameter of the | | |||
| | If the *description* is empty, | | | | DESCRIPTION property (e.g. by setting | | |||
| | implementations SHOUD store a plain text | | | | ALTREP to a "data:text/html" URL containing | | |||
| | version of *htmlDescription* in iCalendar | | | | the HTML text). Alternatively, use the | | |||
| | DESCRIPTION. | | | | STYLED-DESCRIPTION property. *NON- | | |||
| | STANDARD*: the STYLED-DESCRIPTION property | | ||||
| | currently is non-standard, see | | ||||
| | [draft-ietf-calext-eventpub-extensions]. | | ||||
| | | | | | | | |||
| freeBusyStatus | Corresponds to the TRANSP property in | | | freeBusyStatus | Corresponds to the TRANSP property in | | |||
| | iCalendar. | | | | iCalendar. | | |||
| | | | | | | | |||
| keywords | Corresponds to the CATEGORIES property in | | | keywords | Corresponds to the CATEGORIES property in | | |||
| | iCalendar, as specified in [RFC7986]. | | | | iCalendar, as specified in [RFC7986]. | | |||
| | | | | | | | |||
| links | Corresponds to the ATTACH ([RFC5545]) and | | | links | Corresponds to the ATTACH ([RFC5545]) or | | |||
| | IMAGE iCalendar properties ([RFC7986]). | | | | IMAGE ([RFC7986]) properties with a URI | | |||
| | value type set to the link "href". | | ||||
| | ([RFC7986]). The *type* property | | ||||
| | corresponds to the FMTTYPE parameter, the | | ||||
| | *size* property to the SIZE parameter. | | ||||
| | Mapping all other properties is | | ||||
| | implementation-specific. | | ||||
| | | | | | | | |||
| locale | Corresponds to the LANGUAGE parameter in | | | locale | Corresponds to the LANGUAGE parameter in | | |||
| | iCalendar, which is added to individual | | | | iCalendar, which is added to individual | | |||
| | properties. When converting from | | | | properties. When converting from | | |||
| | iCalendar, one language must be picked as | | | | iCalendar, one language must be picked as | | |||
| | the main locale for the object, and all | | | | the main locale. | | |||
| | properties in other languages moved to the | | ||||
| | localizations JSEvent property. | | ||||
| | | | ||||
| localizations | Corresponds to the LANGUAGE parameter in | | ||||
| | iCalendar, which is added to individual | | ||||
| | properties. When converting from | | ||||
| | iCalendar, one language must be picked as | | ||||
| | the main locale for the object, and all | | ||||
| | properties in other languages moved to the | | ||||
| | localizations JSEvent property. | | ||||
| | | | | | | | |||
| locations | See Section 6.5. | | | locations | See Section 6.5. | | |||
| | | | | | | | |||
| method | Corresponds to the METHOD property in | | | method | Corresponds to the METHOD property in | | |||
| | iCalendar. | | | | iCalendar. | | |||
| | | | | | | | |||
| participants | See Section 6.5. | | | participants | See Section 6.5. | | |||
| | | | | | | | |||
| priority | Corresponds to the PRIORITY property in | | | priority | Corresponds to the PRIORITY property in | | |||
| | iCalendar. | | | | iCalendar. | | |||
skipping to change at page 39, line 18 ¶ | skipping to change at page 38, line 21 ¶ | |||
| | with a recurrence-id. | | | | with a recurrence-id. | | |||
| | | | | | | | |||
| recurrenceRule | Corresponds to the RRULE property in | | | recurrenceRule | Corresponds to the RRULE property in | | |||
| | iCalendar. See the property definition at | | | | iCalendar. See the property definition at | | |||
| | section Section 4.3.1 how to map a RRULE | | | | section Section 4.3.1 how to map a RRULE | | |||
| | value. | | | | value. | | |||
| | | | | | | | |||
| relatedTo | Corresponds to the RELATED-TO property in | | | relatedTo | Corresponds to the RELATED-TO property in | | |||
| | iCalendar. | | | | iCalendar. | | |||
| | | | | | | | |||
| replyTo | A *replyTo* property of type "imip" | | | replyTo | An iCalendar ORGANIZER with one of the | | |||
| | corresponds to the email address of the | | | | mapped URIs as value. If URIs are defined | | |||
| | ORGANIZER property in iCalendar. There is | | | | for both the "imip" and "web" type, it is | | |||
| | no iCalendar representation for the "web" | | | | recommended to map the "imip" value to the | | |||
| | type. | | | | calendar address value of the ORGANIZER. | | |||
| | | | | | | | |||
| sequence | Corresponds to the SEQUENCE property in | | | sequence | Corresponds to the SEQUENCE property in | | |||
| | iCalendar. | | | | iCalendar. | | |||
| | | | | | | | |||
| status | Corresponds to the STATUS property in | | | status | Corresponds to the STATUS property in | | |||
| | iCalendar (converted to lower-case). | | | | iCalendar (converted to lower-case). | | |||
| | | | | | | | |||
| title | Corresponds to the SUMMARY property in | | | title | Corresponds to the SUMMARY property in | | |||
| | iCalendar. | | | | iCalendar. | | |||
| | | | | | | | |||
skipping to change at page 40, line 5 ¶ | skipping to change at page 39, line 9 ¶ | |||
6.5. Locations and participants | 6.5. Locations and participants | |||
Both JSCalendar participants and locations have counterparts in | Both JSCalendar participants and locations have counterparts in | |||
iCalendar but provide richer representation. | iCalendar but provide richer representation. | |||
The following table outlines translation of JSCalendar participants. | The following table outlines translation of JSCalendar participants. | |||
Where iCalendar has distinct properties for ORGANIZER and ATTENDEE, | Where iCalendar has distinct properties for ORGANIZER and ATTENDEE, | |||
these are merged in JSCalendar into the Participant object type. | these are merged in JSCalendar into the Participant object type. | |||
+------------------+------------------------------------------------+ | +--------------------------------------------------+----------------+ | |||
| Property | iCalendar counterpart | | | Property | iCalendar | | |||
+------------------+------------------------------------------------+ | | | counterpart | | |||
| name | the CN parameter | | +--------------------------------------------------+----------------+ | |||
| | | | | delegatedFrom | the DELEGATED- | | |||
| kind | the CUTYPE parameter | | | | FROM parameter | | |||
| | | | | | | | |||
| rsvpResponse | the PARTSTAT parameter | | | delegatedTo | email | | |||
| | | | | | | | |||
| role | the ORGANIZER and ATTENDEE properties. Owners | | | the value of the ORGANIZER or ATTENDEE property | kind | | |||
| | map to the iCalendar ORGANIZER property, where | | | | | | |||
| | mapping multiple owners to iCalendar is | | | the CUTYPE parameter | linkIds | | |||
| | implementation-specific but MUST be consistent | | | | | | |||
| | across mappings of the same object. | | | Implementation-specific. | locationId | | |||
| | | | | | | | |||
| participation | the ROLE parameter | | | Implementation-specific. When mapping from | memberOf | | |||
| | | | | iCalendar to JSCalendar this may be the | | | |||
| locationId | the JSCalendar identifier of a mapped | | | JSCalendar identifier of a CONFERENCE property | | | |||
| | CONFERENCE property that has the MODERATOR | | | that has the MODERATOR feature defined in its | | | |||
| | feature defined in its FEATURE parameter | | | FEATURE parameter values. If multiple such | | | |||
| | values. If multiple such CONFERENCE properties | | | CONFERENCE properties are defined in iCalendar, | | | |||
| | are defined in iCalendar, then the one with | | | then the one with the most interactive features | | | |||
| | the most interactive features is chosen (VIDEO | | | is chosen. | | | |||
| | over AUDIO over CHAT over anything else). | | | | | | |||
| | | | | the MEMBER parameter | name | | |||
| rsvpWanted | the RSVP parameter | | | | | | |||
| | | | | the CN parameter | participation | | |||
| delegatedTo | the DELEGATED-TO parameter | | | | | | |||
| | | | | Maps to the standard iCalendar ROLE parameter | roles | | |||
| delegatedFrom | the DELEGATED-FROM parameter | | | values REQ-PARTICIPANT, OPT-PARTICIPANT and NON- | | | |||
| | | | | PARTICIPANT. | | | |||
| memberOf | the MEMBER parameter | | | | | | |||
| | | | | The "chair" role maps to the standard iCalendar | rsvpResponse | | |||
| scheduleSequence | the SEQUENCE property of the participant's | | | ROLE parameter value "chair", with an implicit | | | |||
| | latest iMIP message | | | participant of value "required". The mapping of | | | |||
| | | | | non-required chairs and other roles is | | | |||
| scheduleUpdated | the DTSTAMP property of the participant's | | | implementation-specific, but using "x-name" | | | |||
| | latest iMIP message | | | parameter values is recommended. | | | |||
+------------------+------------------------------------------------+ | | | | | |||
| the PARTSTAT parameter | the DELEGATED- | | ||||
| | TO parameter | | ||||
| | | | ||||
| scheduleSequence | the SEQUENCE | | ||||
| | property of | | ||||
| | the | | ||||
| | participant's | | ||||
| | latest iMIP | | ||||
| | message | | ||||
| | | | ||||
| scheduleUpdated | the DTSTAMP | | ||||
| | property of | | ||||
| | the | | ||||
| | participant's | | ||||
| | latest iMIP | | ||||
| | message | | ||||
+--------------------------------------------------+----------------+ | ||||
Table 6: Translation of Participant between JSCalendar and iCalendar | Table 6: Translation of Participant between JSCalendar and iCalendar | |||
For JSCalendar locations, the iCalendar counterparts are the | For JSCalendar locations, the iCalendar counterparts are the | |||
[RFC5545] LOCATION and the extended iCalendar [RFC7986] CONFERENCE | [RFC5545] LOCATION and the extended iCalendar [RFC7986] CONFERENCE | |||
properties. | properties. Generally, use a LOCATION property if only the name | |||
property is set, CONFERENCE otherwise. For backwards compatibility | ||||
with client implementations that do not support the CONFERENCE | ||||
property, it is recommended to set use at least one LOCATION | ||||
property, if the JSCalendar object contains locations. | ||||
An iCalendar LOCATION property becomes a JSCalendar Location with | +-------------+-----------------------------------------------------+ | |||
just a description property. CONFERENCE property values in iCalendar | | Property | iCalendar counterpart | | |||
map to locations with *rel* type "virtual". The location *feature* | +-------------+-----------------------------------------------------+ | |||
property value corresponds to the extended iCalendar FEATURE property | | name | For LOCATION: corresponds to the property value. | | |||
parameter values defined in [RFC7986]. Both iCalendar PHONE and | | | For CONFERENCE: corresponds to the LABEL parameter. | | |||
AUDIO features map to the "audio" feature and the FEED parameter | | | | | |||
value is omitted. See the mapping for *locationId* in Table 6 on how | | description | Implementation-specific. | | |||
to map CONFERENCE properties that contain the MODERATOR feature. | | | | | |||
| rel | For CONFERENCE: implicitly "virtual". | | ||||
| | Implementation-specific for LOCATION. | | ||||
| | | | ||||
| features | For CONFERENCE: corresponds to the FEATURE | | ||||
| | parameter. Implementation-specific for LOCATION. | | ||||
| | | | ||||
| timeZone | Implementation-specific. | | ||||
| | | | ||||
| coordinates | Implementation-specific. Consider using a GEO | | ||||
| | iCalendar property, along with one LOCATION or | | ||||
| | CONFERENCE. | | ||||
| | | | ||||
| uri | For LOCATION: corresponds to the ALTREP parameter. | | ||||
| | For CONFERENCE: corresponds to the property value. | | ||||
| | | | ||||
| linkIds | Implementation-specific. | | ||||
+-------------+-----------------------------------------------------+ | ||||
Table 7: Translation of Location between JSCalendar and iCalendar | ||||
6.6. Unknown properties | 6.6. Unknown properties | |||
Both JSCalendar and iCalendar calendar objects may contain properties | Both JSCalendar and iCalendar calendar objects may contain properties | |||
that are not expressible in the other format. This specification | that are not expressible in the other format. This specification | |||
does not mandate how to preserve these properties. Instead, it | does not mandate how to preserve these properties. Instead, it | |||
leaves negotiation on how to treat unknown properties to client and | leaves negotiation on how to treat unknown properties to client and | |||
server implementations and their protocol used to exchange calendar | server implementations and their protocol used to exchange calendar | |||
objects. | objects. | |||
skipping to change at page 45, line 5 ¶ | skipping to change at page 45, line 5 ¶ | |||
{ | { | |||
"...": "", | "...": "", | |||
"title": "Yoga", | "title": "Yoga", | |||
"start": "2018-01-01T07:00:00", | "start": "2018-01-01T07:00:00", | |||
"duration": "PT30M", | "duration": "PT30M", | |||
"recurrenceRule": { | "recurrenceRule": { | |||
"frequency": "daily" | "frequency": "daily" | |||
} | } | |||
} | } | |||
7.8. Event with multiple locations and localization | 7.8. Event with multiple locations | |||
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. (Note: the | online. | |||
localization of the event description contains an UTF-8 encoded | ||||
German Umlaut. This character may have been replaced with ASCII | ||||
characters in the plain-text rendering of this RFC document) | ||||
{ | { | |||
"...": "", | "...": "", | |||
"title": "Live from Music Bowl: The Band", | "title": "Live from Music Bowl: The Band", | |||
"description": "Go see the biggest music event ever!", | "description": "Go see the biggest music event ever!", | |||
"locale": "en", | "locale": "en", | |||
"start": "2018-07-04T17:00:00", | "start": "2018-07-04T17:00:00", | |||
"timeZone": "America/New_York", | "timeZone": "America/New_York", | |||
"duration": "PT3H", | "duration": "PT3H", | |||
"locations": { | "locations": { | |||
skipping to change at page 45, line 38 ¶ | skipping to change at page 45, line 35 ¶ | |||
"6f3696c6-1e07-47d0-9ce1-f50014b0041a": { | "6f3696c6-1e07-47d0-9ce1-f50014b0041a": { | |||
"name": "Free live Stream from Music Bowl", | "name": "Free live Stream from Music Bowl", | |||
"rel": "virtual", | "rel": "virtual", | |||
"features": [ | "features": [ | |||
"video", | "video", | |||
"audio", | "audio", | |||
"chat" | "chat" | |||
], | ], | |||
"uri": "https://stream.example.com/the_band_2018" | "uri": "https://stream.example.com/the_band_2018" | |||
} | } | |||
}, | ||||
"localizations": { | ||||
"de": { | ||||
"title": "Live von der Music Bowl: The Band!", | ||||
"description": "Schau dir das groesste Musikereignis an!", | ||||
"locations/6f3696c6-1e07-47d0-9ce1-f50014b0041a/name": | ||||
"Gratis Live-Stream aus der Music Bowl" | ||||
} | ||||
} | } | |||
} | } | |||
7.9. Recurring event with overrides | 7.9. Recurring event with overrides | |||
This example illustrates the use of recurrence overrides. A math | This example illustrates the use of recurrence overrides. A math | |||
course at a University is held for the first time on January 8, 2018 | course at a University is held for the first time on January 8, 2018 | |||
at 9am London time and occurs every week until June 25, 2018. Each | at 9am London time and occurs every week until June 25, 2018. Each | |||
lecture lasts for one hour and 30 minutes and is located at the | lecture lasts for one hour and 30 minutes and is located at the | |||
Mathematics department. This event has exceptional occurrences: at | Mathematics department. This event has exceptional occurrences: at | |||
skipping to change at page 49, line 34 ¶ | skipping to change at page 49, line 19 ¶ | |||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
RFC 3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
<https://www.rfc-editor.org/info/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | |||
Unique IDentifier (UUID) URN Namespace", RFC 4122, | Unique IDentifier (UUID) URN Namespace", RFC 4122, | |||
DOI 10.17487/RFC4122, July 2005, | DOI 10.17487/RFC4122, July 2005, | |||
<https://www.rfc-editor.org/info/rfc4122>. | <https://www.rfc-editor.org/info/rfc4122>. | |||
[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | ||||
Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | ||||
<https://www.rfc-editor.org/info/rfc4648>. | ||||
[RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, | [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, | |||
"Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, | "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, | |||
DOI 10.17487/RFC4791, March 2007, | DOI 10.17487/RFC4791, March 2007, | |||
<https://www.rfc-editor.org/info/rfc4791>. | <https://www.rfc-editor.org/info/rfc4791>. | |||
[RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and | [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and | |||
Scheduling Core Object Specification (iCalendar)", | Scheduling Core Object Specification (iCalendar)", | |||
RFC 5545, DOI 10.17487/RFC5545, September 2009, | RFC 5545, DOI 10.17487/RFC5545, September 2009, | |||
<https://www.rfc-editor.org/info/rfc5545>. | <https://www.rfc-editor.org/info/rfc5545>. | |||
skipping to change at page 51, line 20 ¶ | skipping to change at page 51, line 10 ¶ | |||
[draft-apthorp-ical-tasks] | [draft-apthorp-ical-tasks] | |||
"Task Extensions to iCalendar", | "Task Extensions to iCalendar", | |||
<https://tools.ietf.org/html/draft-apthorp-ical-tasks>. | <https://tools.ietf.org/html/draft-apthorp-ical-tasks>. | |||
[draft-daboo-valarm-extensions] | [draft-daboo-valarm-extensions] | |||
"VALARM Extensions for iCalendar", | "VALARM Extensions for iCalendar", | |||
<https://tools.ietf.org/html/ | <https://tools.ietf.org/html/ | |||
draft-daboo-valarm-extensions>. | draft-daboo-valarm-extensions>. | |||
[draft-ietf-calext-eventpub-extensions] | ||||
"Event Publishing Extensions to iCalendar", | ||||
<https://tools.ietf.org/html/ | ||||
draft-ietf-calext-eventpub-extensions>. | ||||
[draft-ietf-calext-ical-relations] | [draft-ietf-calext-ical-relations] | |||
"Support for iCalendar Relationships", | "Support for iCalendar Relationships", | |||
<https://tools.ietf.org/html/ | <https://tools.ietf.org/html/ | |||
draft-ietf-calext-ical-relations>. | draft-ietf-calext-ical-relations>. | |||
11.3. URIs | 11.3. URIs | |||
[1] https://www.w3.org/TR/html/ | [1] https://www.w3.org/TR/html/ | |||
[2] https://www.iana.org/assignments/link-relations/link- | [2] https://www.iana.org/assignments/link-relations/link- | |||
End of changes. 52 change blocks. | ||||
215 lines changed or deleted | 236 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/ |