rfc9074.original | rfc9074.txt | |||
---|---|---|---|---|
Network Working Group C. Daboo | Internet Engineering Task Force (IETF) C. Daboo | |||
Internet-Draft Apple | Request for Comments: 9074 Apple | |||
Updates: 5545 (if approved) K. Murchison, Ed. | Updates: 5545 K. Murchison, Ed. | |||
Intended status: Standards Track Fastmail | Category: Standards Track Fastmail | |||
Expires: September 4, 2021 March 3, 2021 | ISSN: 2070-1721 August 2021 | |||
VALARM Extensions for iCalendar | "VALARM" Extensions for iCalendar | |||
draft-ietf-calext-valarm-extensions-07 | ||||
Abstract | Abstract | |||
This document defines a set of extensions to the iCalendar VALARM | This document defines a set of extensions to the iCalendar "VALARM" | |||
component to enhance use of alarms and improve interoperability | component to enhance the use of alarms and improve interoperability | |||
between clients and servers. | between clients and servers. | |||
This document updates RFC5545. | This document updates RFC 5545. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
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 | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on September 4, 2021. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9074. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document | |||
3. Extensible syntax for VALARM . . . . . . . . . . . . . . . . 3 | 3. Extensible Syntax for VALARM | |||
4. Alarm Unique Identifier . . . . . . . . . . . . . . . . . . . 5 | 4. Alarm Unique Identifier | |||
5. Alarm Related To . . . . . . . . . . . . . . . . . . . . . . 6 | 5. Alarm Related To | |||
6. Alarm Acknowledgement . . . . . . . . . . . . . . . . . . . . 6 | 6. Alarm Acknowledgement | |||
6.1. Acknowledged Property . . . . . . . . . . . . . . . . . . 7 | 6.1. Acknowledged Property | |||
7. Snoozing Alarms . . . . . . . . . . . . . . . . . . . . . . . 8 | 7. Snoozing Alarms | |||
7.1. Relationship Type Property Parameter . . . . . . . . . . 9 | 7.1. Relationship Type Property Parameter | |||
7.2. Example . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 7.2. Example | |||
8. Alarm Proximity Trigger . . . . . . . . . . . . . . . . . . . 13 | 8. Alarm Proximity Trigger | |||
8.1. Proximity Property . . . . . . . . . . . . . . . . . . . 14 | 8.1. Proximity Property | |||
8.2. Example . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 8.2. Example | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 9. Security Considerations | |||
10. Privacy Considerations . . . . . . . . . . . . . . . . . . . 16 | 10. Privacy Considerations | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 11. IANA Considerations | |||
11.1. Property Registrations . . . . . . . . . . . . . . . . . 17 | 11.1. Property Registrations | |||
11.2. Relationship Types Registry . . . . . . . . . . . . . . 17 | 11.2. Relationship Types Registry | |||
11.3. Proximity Value Registry . . . . . . . . . . . . . . . . 17 | 11.3. Proximity Values Registry | |||
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 18 | 12. References | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 12.1. Normative References | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . 18 | 12.2. Informative References | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 19 | Acknowledgements | |||
Appendix A. Change History (To be removed by RFC Editor before | Authors' Addresses | |||
publication) . . . . . . . . . . . . . . . . . . . . 19 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | ||||
1. Introduction | 1. Introduction | |||
The iCalendar [RFC5545] specification defines a set of components | The iCalendar specification [RFC5545] defines a set of components | |||
used to describe calendar data. One of those is the "VALARM" | used to describe calendar data. One of those is the "VALARM" | |||
component which appears as a sub-component of "VEVENT" and "VTODO" | component, which appears as a subcomponent of the "VEVENT" and | |||
components. The "VALARM" component is used to specify a reminder for | "VTODO" components. The "VALARM" component is used to specify a | |||
an event or task. Different alarm actions are possible, as are | reminder for an event or task. Different alarm actions are possible, | |||
different ways to specify how the alarm is triggered. | as are different ways to specify how the alarm is triggered. | |||
As iCalendar has become more widely used and as client-server | As iCalendar has become more widely used and as client-server | |||
protocols such as CalDAV [RFC4791] have become more prevalent, | protocols, such as Calendaring Extensions to WebDAV (CalDAV) | |||
several issues with "VALARM" components have arisen. Most of these | [RFC4791], have become more prevalent, several issues with "VALARM" | |||
relate to the need to extend the existing "VALARM" component with new | components have arisen. Most of these relate to the need to extend | |||
properties and behaviors to allow clients and servers to accomplish | the existing "VALARM" component with new properties and behaviors to | |||
specific tasks in an interoperable manner. For example, clients | allow clients and servers to accomplish specific tasks in an | |||
typically need a way to specify that an alarm has been dismissed by a | interoperable manner. For example, clients typically need a way to | |||
calendar user, or has been "snoozed" by a set amount of time. To | specify that an alarm has been dismissed by a calendar user or has | |||
date, this has been done through the use of custom "X-" properties | been "snoozed" by a set amount of time. To date, this has been done | |||
specific to each client implementation, leading to poor | through the use of custom "X-" properties specific to each client | |||
interoperability. | implementation, leading to poor interoperability. | |||
This specification defines a set of extensions to "VALARM" components | This specification defines a set of extensions to "VALARM" components | |||
to cover common requirements for alarms not currently addressed in | to cover common requirements for alarms not currently addressed in | |||
iCalendar. Each extension is defined in a separate section below. | iCalendar. Each extension is defined in a separate section below. | |||
For the most part, each extension can be supported independently of | For the most part, each extension can be supported independently of | |||
the others, though in some cases one extension will require another. | the others; though, in some cases, one extension will require | |||
In addition, this specification describes mechanisms by which clients | another. In addition, this specification describes mechanisms by | |||
can interoperably implement common features such as "snoozing". | which clients can interoperably implement common features, such as | |||
"snoozing". | ||||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
The notation used in this memo to (re-)define iCalendar elements is | ||||
the ABNF notation of [RFC5234] as used by [RFC5545]. Any syntax | ||||
elements shown below that are not explicitly defined in this | ||||
specification come from iCalendar [RFC5545]. | ||||
When XML element types in the namespaces "DAV:" and | When XML element types in the namespaces "DAV:" and | |||
"urn:ietf:params:xml:ns:caldav" are referenced in this document | "urn:ietf:params:xml:ns:caldav" are referenced in this document | |||
outside of the context of an XML fragment, the string "DAV:" and | outside of the context of an XML fragment, the string "DAV:" and | |||
"CALDAV:" will be prefixed to the element type names respectively. | "CALDAV:" will be prefixed to the element type names, respectively. | |||
3. Extensible syntax for VALARM | 3. Extensible Syntax for VALARM | |||
Section 3.6.6 of [RFC5545] defines the syntax for "VALARM" components | Section 3.6.6 of [RFC5545] defines the syntax for "VALARM" components | |||
and properties within them. However, as written, it is hard to | and properties within them. However, as written, it is hard to | |||
extend this by adding, e.g., a new property common to all types of | extend this, e.g., by adding a new property common to all types of | |||
alarm. Since many of the extensions defined in this document need to | alarms. Since many of the extensions defined in this document need | |||
extend the base syntax, an alternative form for the base syntax is | to extend the base syntax, an alternative form for the base syntax is | |||
defined here, with the goal of simplifying specification of the | defined here, with the goal of simplifying specification of the | |||
extensions while augmenting the existing functionality defined in | extensions while augmenting the existing functionality defined in | |||
[RFC5545] to allow for nested sub-components (as required by | [RFC5545] to allow for nested subcomponents (as required by proximity | |||
proximity alarm triggers (Section 8)). | alarm triggers (Section 8)). | |||
A "VALARM" calendar component is re-defined by the following | A "VALARM" calendar component is redefined by the following notation: | |||
notation: | ||||
alarmcext = "BEGIN" ":" "VALARM" CRLF | alarmcext = "BEGIN" ":" "VALARM" CRLF | |||
*alarmprop *alarm-subcomp | *alarmprop *alarm-subcomp | |||
"END" ":" "VALARM" CRLF | "END" ":" "VALARM" CRLF | |||
alarmprop = ( | alarmprop = ( | |||
; the following are REQUIRED, | ; the following are REQUIRED | |||
; but MUST NOT occur more than once | ; but MUST NOT occur more than once | |||
action / trigger / | action / trigger / | |||
; one set of action properties MUST be | ; one set of action properties MUST be | |||
; present and MUST match the action specified | ; present and MUST match the action specified | |||
; in the ACTION property | ; in the ACTION property | |||
actionprops / | actionprops / | |||
; the following are OPTIONAL, | ; the following are OPTIONAL | |||
; and MAY occur more than once | ; and MAY occur more than once | |||
x-prop / iana-prop | x-prop / iana-prop | |||
) | ) | |||
actionprops = *audiopropext / *disppropext / *emailpropext | actionprops = *audiopropext / *disppropext / *emailpropext | |||
audiopropext = ( | audiopropext = ( | |||
; 'duration' and 'repeat' are both OPTIONAL, | ; 'duration' and 'repeat' are both OPTIONAL | |||
; and MUST NOT occur more than once each, | ; and MUST NOT occur more than once each, | |||
; but if one occurs, so MUST the other | ; but if one occurs, so MUST the other | |||
duration / repeat / | duration / repeat / | |||
; the following is OPTIONAL, | ; the following is OPTIONAL | |||
; but MUST NOT occur more than once | ; but MUST NOT occur more than once | |||
attach | attach | |||
) | ) | |||
disppropext = ( | disppropext = ( | |||
; the following are REQUIRED, | ; the following are REQUIRED | |||
; but MUST NOT occur more than once | ; but MUST NOT occur more than once | |||
description / | description / | |||
; 'duration' and 'repeat' are both OPTIONAL, | ; 'duration' and 'repeat' are both OPTIONAL | |||
; and MUST NOT occur more than once each, | ; and MUST NOT occur more than once each, | |||
; but if one occurs, so MUST the other | ; but if one occurs, so MUST the other | |||
duration / repeat | duration / repeat | |||
) | ) | |||
emailpropext = ( | emailpropext = ( | |||
; the following are all REQUIRED, | ; the following are all REQUIRED | |||
; but MUST NOT occur more than once | ; but MUST NOT occur more than once | |||
description / summary / | description / summary / | |||
; the following is REQUIRED, | ; the following is REQUIRED | |||
; and MAY occur more than once | ; and MAY occur more than once | |||
attendee / | attendee / | |||
; 'duration' and 'repeat' are both OPTIONAL, | ; 'duration' and 'repeat' are both OPTIONAL | |||
; and MUST NOT occur more than once each, | ; and MUST NOT occur more than once each, | |||
; but if one occurs, so MUST the other | ; but if one occurs, so MUST the other | |||
duration / repeat | duration / repeat | |||
; the following is OPTIONAL, | ; the following is OPTIONAL | |||
; and MAY occur more than once | ; and MAY occur more than once | |||
attach | attach | |||
) | ) | |||
alarm-subcomp = ( | alarm-subcomp = ( | |||
; the following are OPTIONAL, | ; the following are OPTIONAL | |||
; and MAY occur more than once | ; and MAY occur more than once | |||
x-comp / iana-comp | x-comp / iana-comp | |||
) | ) | |||
4. Alarm Unique Identifier | 4. Alarm Unique Identifier | |||
This extension adds a "UID" property to "VALARM" components to allow | This extension adds a "UID" property to "VALARM" components to allow | |||
a unique identifier to be specified. The value of this property can | a unique identifier to be specified. The value of this property can | |||
then be used to refer uniquely to the "VALARM" component. | then be used to refer uniquely to the "VALARM" component. | |||
The "UID" property defined here follows the definition in | The "UID" property defined here follows the definition in | |||
Section 3.8.4.7 of [RFC5545] with the security and privacy updates in | Section 3.8.4.7 of [RFC5545] with the security and privacy updates in | |||
Section 5.3 of [RFC7986]. In particular it MUST be a globally unique | Section 5.3 of [RFC7986]. In particular, it MUST be a globally | |||
identifier that does not contain any security- or privacy-sensitive | unique identifier that does not contain any security- or privacy- | |||
information. | sensitive information. | |||
The "VALARM" component defined in Section 3 is extended here as: | The "VALARM" component defined in Section 3 is extended here as: | |||
alarmprop =/ ( | alarmprop =/ ( | |||
; the following is OPTIONAL, | ; the following is OPTIONAL | |||
; but MUST NOT occur more than once | ; but MUST NOT occur more than once | |||
uid | uid | |||
) | ) | |||
5. Alarm Related To | 5. Alarm Related To | |||
It is often convenient to relate one or more "VALARM" components to | It is often convenient to relate one or more "VALARM" components to | |||
other "VALARM" components (e.g., see Section 7). This can be | other "VALARM" components (e.g., see Section 7). This can be | |||
skipping to change at page 6, line 32 ¶ | skipping to change at line 267 ¶ | |||
defined in Section 3.8.4.5 of [RFC5545] to enable its use with | defined in Section 3.8.4.5 of [RFC5545] to enable its use with | |||
"VALARM" components. Specific types of relationships between | "VALARM" components. Specific types of relationships between | |||
"VALARM" components can be identified by registering new values for | "VALARM" components can be identified by registering new values for | |||
the "RELTYPE" property parameter defined in Section 3.2.15 of | the "RELTYPE" property parameter defined in Section 3.2.15 of | |||
[RFC5545]. | [RFC5545]. | |||
The "VALARM" component defined in Section 3 is extended here as: | The "VALARM" component defined in Section 3 is extended here as: | |||
alarmprop =/ ( | alarmprop =/ ( | |||
; the following is OPTIONAL, | ; the following is OPTIONAL | |||
; and MAY occur more than once | ; and MAY occur more than once | |||
related | related | |||
) | ) | |||
6. Alarm Acknowledgement | 6. Alarm Acknowledgement | |||
There is currently no way for a "VALARM" component to indicate | There is currently no way for a "VALARM" component to indicate | |||
whether it has been triggered and acknowledged. With the advent of a | whether it has been triggered and acknowledged. With the advent of a | |||
standard client/server protocol for calendaring and scheduling data | standard client/server protocol for calendaring and scheduling data | |||
([RFC4791]) it is quite possible for an event with an alarm to exist | ([RFC4791]), it is quite possible for an event with an alarm to exist | |||
on multiple clients in addition to the server. If each of those is | on multiple clients in addition to the server. If each of those is | |||
responsible for performing the action when an alarm triggers, then | responsible for performing the action when an alarm triggers, then | |||
multiple "alerts" are generated by different devices. In such a | multiple "alerts" are generated by different devices. In such a | |||
situation, a calendar user would like to be able to "dismiss" the | situation, a calendar user would like to be able to "dismiss" the | |||
alarm on one device and have it automatically dismissed on the others | alarm on one device and have it automatically dismissed on the | |||
too. | others, too. | |||
Also, with recurring events that have alarms, it is important to know | Also, with recurring events that have alarms, it is important to know | |||
when the last alarm in the recurring set was acknowledged, so that | when the last alarm in the recurring set was acknowledged so that the | |||
the client can determine whether past alarms have been missed. | client can determine whether past alarms have been missed. | |||
To address these needs, this specification adds an "ACKNOWLEDGED" | To address these needs, this specification adds an "ACKNOWLEDGED" | |||
property to "VALARM" components to indicate when the alarm was last | property to "VALARM" components to indicate when the alarm was last | |||
acknowledged (or sent, if acknowledgement is not possible). This is | acknowledged (or sent, if acknowledgement is not possible). This is | |||
defined by the syntax below. | defined by the syntax below. | |||
alarmprop =/ ( | alarmprop =/ ( | |||
; the following is OPTIONAL, | ; the following is OPTIONAL | |||
; but MUST NOT occur more than once | ; but MUST NOT occur more than once | |||
acknowledged | acknowledged | |||
) | ) | |||
6.1. Acknowledged Property | 6.1. Acknowledged Property | |||
Property Name: ACKNOWLEDGED | Property Name: ACKNOWLEDGED | |||
Purpose: This property specifies the UTC date and time at which the | Purpose: This property specifies the UTC date and time at which the | |||
corresponding alarm was last sent or acknowledged. | corresponding alarm was last sent or acknowledged. | |||
Value Type: DATE-TIME | Value Type: DATE-TIME | |||
Property Parameters: IANA and non-standard property parameters can | Property Parameters: IANA and nonstandard property parameters can be | |||
be specified on this property. | specified on this property. | |||
Conformance: This property can be specified within "VALARM" calendar | Conformance: This property can be specified within "VALARM" calendar | |||
components. | components. | |||
Description: This property is used to specify when an alarm was last | Description: This property is used to specify when an alarm was last | |||
sent or acknowledged. This allows clients to determine when a | sent or acknowledged. This allows clients to determine when a | |||
pending alarm has been acknowledged by a calendar user so that any | pending alarm has been acknowledged by a calendar user so that any | |||
alerts can be dismissed across multiple devices. It also allows | alerts can be dismissed across multiple devices. It also allows | |||
clients to track repeating alarms or alarms on recurring events or | clients to track repeating alarms or alarms on recurring events or | |||
to-dos to ensure that the right number of missed alarms can be | to-dos to ensure that the right number of missed alarms can be | |||
tracked. | tracked. | |||
Clients SHOULD set this property to the current date-time value in | Clients SHOULD set this property to the current date-time value in | |||
UTC when a calendar user acknowledges a pending alarm. Certain | UTC when a calendar user acknowledges a pending alarm. Certain | |||
kinds of alarms, such as email-based alerts, might not provide | kinds of alarms, such as email-based alerts, might not provide | |||
feedback as to when the calendar user sees them. For those kinds | feedback as to when the calendar user sees them. For those kinds | |||
of alarms, the client SHOULD set this property when the alarm is | of alarms, the client SHOULD set this property when the alarm is | |||
triggered and the action successfully carried out. | triggered and the action is successfully carried out. | |||
When an alarm is triggered on a client, clients can check to see | When an alarm is triggered on a client, clients can check to see | |||
if an "ACKNOWLEDGED" property is present. If it is, and the value | if an "ACKNOWLEDGED" property is present. If it is, and the value | |||
of that property is greater than or equal to the computed trigger | of that property is greater than or equal to the computed trigger | |||
time for the alarm, then the client SHOULD NOT trigger the alarm. | time for the alarm, then the client SHOULD NOT trigger the alarm. | |||
Similarly, if an alarm has been triggered and an "alert" presented | Similarly, if an alarm has been triggered and an "alert" has been | |||
to a calendar user, clients can monitor the iCalendar data to | presented to a calendar user, clients can monitor the iCalendar | |||
determine whether an "ACKNOWLEDGED" property is added or changed | data to determine whether an "ACKNOWLEDGED" property is added or | |||
in the alarm component. If the value of any "ACKNOWLEDGED" | changed in the alarm component. If the value of any | |||
property in the alarm changes and is greater than or equal to the | "ACKNOWLEDGED" property in the alarm changes and is greater than | |||
trigger time of the alarm, then clients SHOULD dismiss or cancel | or equal to the trigger time of the alarm, then clients SHOULD | |||
any "alert" presented to the calendar user. | dismiss or cancel any "alert" presented to the calendar user. | |||
Format Definition: This property is defined by the following | Format Definition: This property is defined by the following | |||
notation: | notation: | |||
acknowledged = "ACKNOWLEDGED" *acknowledgedparam ":" datetime CRLF | acknowledged = "ACKNOWLEDGED" *acknowledgedparam ":" datetime CRLF | |||
acknowledgedparam = ( | acknowledgedparam = ( | |||
; the following is OPTIONAL, | ; the following is OPTIONAL | |||
; and MAY occur more than once | ; and MAY occur more than once | |||
(";" other-param) | (";" other-param) | |||
) | ) | |||
Example: The following is an example of this property: | Example: The following is an example of this property: | |||
ACKNOWLEDGED:20090604T084500Z | ACKNOWLEDGED:20090604T084500Z | |||
7. Snoozing Alarms | 7. Snoozing Alarms | |||
Users often want to "snooze" an alarm, and this specification defines | Users often want to "snooze" an alarm, and this specification defines | |||
a standard approach to accomplish that. | a standard approach to accomplish that. | |||
To "snooze" an alarm that has been triggered, clients MUST do the | To "snooze" an alarm that has been triggered, clients MUST do the | |||
following: | following: | |||
1. Set the "ACKNOWLEDGED" property (see Section 6.1) on the | 1. Set the "ACKNOWLEDGED" property (see Section 6.1) on the | |||
triggered alarm. | triggered alarm. | |||
2. Create a new "VALARM" component (the "snooze" alarm) within the | 2. Create a new "VALARM" component (the "snooze" alarm) within the | |||
parent component of the triggered alarm (i.e., as a "sibling" | parent component of the triggered alarm (i.e., as a "sibling" | |||
component of the triggered alarm). | component of the triggered alarm). | |||
A. The new "snooze" alarm MUST be set to trigger at the user's | a. The new "snooze" alarm MUST be set to trigger at the user's | |||
chosen "snooze" interval after the original alarm triggered. | chosen "snooze" interval after the original alarm is | |||
Clients SHOULD use an absolute "TRIGGER" property with a | triggered. Clients SHOULD use an absolute "TRIGGER" property | |||
"DATE-TIME" value specified in UTC. | with a "DATE-TIME" value specified in UTC. | |||
B. The new "snooze" alarm MUST have a "RELATED-TO" property (see | b. The new "snooze" alarm MUST have a "RELATED-TO" property (see | |||
Section 5) with a value set to the "UID" property value of | Section 5) with a value set to the "UID" property value of | |||
the original "VALARM" component that was triggered. If the | the original "VALARM" component that was triggered. If the | |||
triggered "VALARM" component does not already have a "UID" | triggered "VALARM" component does not already have a "UID" | |||
property, the client MUST add one. The "RELATED-TO" property | property, the client MUST add one. The "RELATED-TO" property | |||
added to the new "snooze" alarm MUST include a "RELTYPE" | added to the new "snooze" alarm MUST include a "RELTYPE" | |||
property parameter with a value set to "SNOOZE" (see | property parameter with a value set to "SNOOZE" (see | |||
Section 7.1). | Section 7.1). | |||
3. When the "snooze" alarm is triggered, the client MUST do the | 3. When the "snooze" alarm is triggered, the client MUST do the | |||
following: | following: | |||
A. Update the "ACKNOWLEDGED" property on the original related | a. Update the "ACKNOWLEDGED" property on the original related | |||
alarm. | alarm. | |||
B. If the "snooze" alarm is itself "snoozed", the client MUST | b. If the "snooze" alarm is itself "snoozed", the client MUST | |||
remove the "snooze" alarm component, and return to step 2. | remove the "snooze" alarm component and return to step 2. | |||
Otherwise, if the "snooze" alarm is dismissed, the client | Otherwise, if the "snooze" alarm is dismissed, the client | |||
MUST do one of the following: | MUST do one of the following: | |||
+ Set the "ACKNOWLEDGED" property on the "snooze" alarm. | * Set the "ACKNOWLEDGED" property on the "snooze" alarm. | |||
+ Remove the "snooze" alarm component. | * Remove the "snooze" alarm component. | |||
Note that regardless of the final disposition of the "snooze" alarm | Note that regardless of the final disposition of the "snooze" alarm | |||
when triggered, the original "VALARM" component is left unchanged | when triggered, the original "VALARM" component is left unchanged | |||
other than updating its "ACKNOWLEDGED" property. | other than updating its "ACKNOWLEDGED" property. | |||
7.1. Relationship Type Property Parameter | 7.1. Relationship Type Property Parameter | |||
This specification adds the "SNOOZE" relationship type for use with | This specification adds the "SNOOZE" relationship type for use with | |||
the "RELTYPE" property defined in Section 3.2.15 of [RFC5545]. This | the "RELTYPE" property defined in Section 3.2.15 of [RFC5545]. This | |||
is used when relating a "snoozed" "VALARM" component to the original | is used when relating a "snoozed" "VALARM" component to the original | |||
alarm that the "snooze" was generated for. | alarm that the "snooze" was generated for. | |||
7.2. Example | 7.2. Example | |||
The following example shows the snoozing, re-snoozing, and dismissal | The following example shows the "snoozing", "re-snoozing", and | |||
of an alarm. Note that the encompassing VCALENDAR component has been | dismissal of an alarm. Note that the encompassing "VCALENDAR" | |||
omitted for brevity and that the line-breaks surrounding the VALARM | component has been omitted for brevity and that the line breaks | |||
components are for clarity only and would not be present in the | surrounding the "VALARM" components are for clarity only and would | |||
actual iCalendar data. | not be present in the actual iCalendar data. | |||
Assume that we have the following event with an alarm set to trigger | Assume that we have the following event with an alarm set to trigger | |||
15 minutes before the meeting: | 15 minutes before the meeting: | |||
BEGIN:VEVENT | BEGIN:VEVENT | |||
CREATED:20210302T151004Z | CREATED:20210302T151004Z | |||
UID:AC67C078-CED3-4BF5-9726-832C3749F627 | UID:AC67C078-CED3-4BF5-9726-832C3749F627 | |||
DTSTAMP:20210302T151004Z | DTSTAMP:20210302T151004Z | |||
DTSTART;TZID=America/New_York:20210302T103000 | DTSTART;TZID=America/New_York:20210302T103000 | |||
DTEND;TZID=America/New_York:20210302T113000 | DTEND;TZID=America/New_York:20210302T113000 | |||
skipping to change at page 10, line 25 ¶ | skipping to change at line 449 ¶ | |||
BEGIN:VALARM | BEGIN:VALARM | |||
UID:8297C37D-BA2D-4476-91AE-C1EAA364F8E1 | UID:8297C37D-BA2D-4476-91AE-C1EAA364F8E1 | |||
TRIGGER:-PT15M | TRIGGER:-PT15M | |||
DESCRIPTION:Event reminder | DESCRIPTION:Event reminder | |||
ACTION:DISPLAY | ACTION:DISPLAY | |||
END:VALARM | END:VALARM | |||
END:VEVENT | END:VEVENT | |||
When the alarm is triggered, the user decides to snooze it for 5 | When the alarm is triggered, the user decides to "snooze" it for 5 | |||
minutes. The client acknowledges the original alarm and creates a | minutes. The client acknowledges the original alarm and creates a | |||
new "snooze" alarm as a sibling of, and relates it to, the original | new "snooze" alarm as a sibling of, and relates it to, the original | |||
alarm (note that both VALARMs reside within the same "parent" | alarm (note that both occurrences of "VALARM" reside within the same | |||
VEVENT): | "parent" VEVENT): | |||
BEGIN:VEVENT | BEGIN:VEVENT | |||
CREATED:20210302T151004Z | CREATED:20210302T151004Z | |||
UID:AC67C078-CED3-4BF5-9726-832C3749F627 | UID:AC67C078-CED3-4BF5-9726-832C3749F627 | |||
DTSTAMP:20210302T151516Z | DTSTAMP:20210302T151516Z | |||
DTSTART;TZID=America/New_York:20210302T103000 | DTSTART;TZID=America/New_York:20210302T103000 | |||
DTEND;TZID=America/New_York:20210302T113000 | DTEND;TZID=America/New_York:20210302T113000 | |||
SUMMARY:Meeting | SUMMARY:Meeting | |||
BEGIN:VALARM | BEGIN:VALARM | |||
skipping to change at page 11, line 31 ¶ | skipping to change at line 481 ¶ | |||
BEGIN:VALARM | BEGIN:VALARM | |||
UID:DE7B5C34-83FF-47FE-BE9E-FF41AE6DD097 | UID:DE7B5C34-83FF-47FE-BE9E-FF41AE6DD097 | |||
TRIGGER;VALUE=DATE-TIME:20210302T152000Z | TRIGGER;VALUE=DATE-TIME:20210302T152000Z | |||
RELATED-TO;RELTYPE=SNOOZE:8297C37D-BA2D-4476-91AE-C1EAA364F8E1 | RELATED-TO;RELTYPE=SNOOZE:8297C37D-BA2D-4476-91AE-C1EAA364F8E1 | |||
DESCRIPTION:Event reminder | DESCRIPTION:Event reminder | |||
ACTION:DISPLAY | ACTION:DISPLAY | |||
END:VALARM | END:VALARM | |||
END:VEVENT | END:VEVENT | |||
When the "snooze" alarm is triggered, the user decides to snooze it | When the "snooze" alarm is triggered, the user decides to "snooze" it | |||
again for an additional 5 minutes. The client once again | again for an additional 5 minutes. The client once again | |||
acknowledges the original alarm, removes the triggered "snooze" | acknowledges the original alarm, removes the triggered "snooze" | |||
alarm, and creates another new "snooze" alarm as a sibling of, and | alarm, and creates another new "snooze" alarm as a sibling of, and | |||
relates it to, the original alarm (note the different UID for the new | relates it to, the original alarm (note the different UID for the new | |||
snooze alarm): | "snooze" alarm): | |||
BEGIN:VEVENT | BEGIN:VEVENT | |||
CREATED:20210302T151004Z | CREATED:20210302T151004Z | |||
UID:AC67C078-CED3-4BF5-9726-832C3749F627 | UID:AC67C078-CED3-4BF5-9726-832C3749F627 | |||
DTSTAMP:20210302T152026Z | DTSTAMP:20210302T152026Z | |||
DTSTART;TZID=America/New_York:20210302T103000 | DTSTART;TZID=America/New_York:20210302T103000 | |||
DTEND;TZID=America/New_York:20210302T113000 | DTEND;TZID=America/New_York:20210302T113000 | |||
SUMMARY:Meeting | SUMMARY:Meeting | |||
BEGIN:VALARM | BEGIN:VALARM | |||
skipping to change at page 13, line 34 ¶ | skipping to change at line 547 ¶ | |||
RELATED-TO;RELTYPE=SNOOZE:8297C37D-BA2D-4476-91AE-C1EAA364F8E1 | RELATED-TO;RELTYPE=SNOOZE:8297C37D-BA2D-4476-91AE-C1EAA364F8E1 | |||
DESCRIPTION:Event reminder | DESCRIPTION:Event reminder | |||
ACTION:DISPLAY | ACTION:DISPLAY | |||
ACKNOWLEDGED:20210302T152507Z | ACKNOWLEDGED:20210302T152507Z | |||
END:VALARM | END:VALARM | |||
END:VEVENT | END:VEVENT | |||
8. Alarm Proximity Trigger | 8. Alarm Proximity Trigger | |||
VALARMs are currently triggered when a specific date-time is reached. | Currently, a "VALARM" is triggered when a specific date-time value is | |||
It is also desirable to be able to trigger alarms based on location, | reached. It is also desirable to be able to trigger alarms based on | |||
e.g. when arriving at or departing from a particular location. | location, e.g., when arriving at or departing from a particular | |||
location. | ||||
This specification adds the following elements to "VALARM" components | This specification adds the following elements to "VALARM" components | |||
to indicate when an alarm can be triggered based on location. | to indicate when an alarm can be triggered based on location. | |||
"PROXIMITY" property - indicates that a location based trigger is | "PROXIMITY" property: indicates that a location-based trigger is to | |||
to be used and which action is used for the trigger | be used and which action is used for the trigger | |||
"VLOCATION" component(s) [I-D.ietf-calext-eventpub-extensions] - | "VLOCATION" component(s) [RFC9073]: used to indicate the actual | |||
used to indicate the actual location(s) to trigger off of, | location(s) to trigger off of, specified with a URL property | |||
specified with a URL property containing a geo: URI [RFC5870] | containing a 'geo' URI [RFC5870], which allows for two or three | |||
which allows for two or three coordinate values with an optional | coordinate values with an optional uncertainty | |||
uncertainty | ||||
alarmprop =/ ( | alarmprop =/ ( | |||
; the following is OPTIONAL, | ; the following is OPTIONAL | |||
; but MUST NOT occur more than once | ; but MUST NOT occur more than once | |||
proximity / | proximity / | |||
) | ) | |||
alarm-subcomp =/ ( | alarm-subcomp =/ ( | |||
; the following is OPTIONAL, | ; the following is OPTIONAL | |||
; and MAY occur more than once, but only | ; and MAY occur more than once but only | |||
; when a PROXIMITY property is also present | ; when a PROXIMITY property is also present | |||
locationc | locationc | |||
) | ) | |||
Typically, when a "PROXIMITY" property is used there is no need to | Typically, when a "PROXIMITY" property is used, there is no need to | |||
specify a time-based trigger using the "TRIGGER" property. However, | specify a time-based trigger using the "TRIGGER" property. However, | |||
since "TRIGGER" is defined as a required property for a "VALARM" | since "TRIGGER" is defined as a required property for a "VALARM" | |||
component, for backwards compatibility it has to be present, but | component, for backwards compatibility, it has to be present but | |||
ignored. To indicate a "TRIGGER" that is to be ignored, clients | ignored. To indicate a "TRIGGER" that is to be ignored, clients | |||
SHOULD use a value a long time in the past. A value of | SHOULD use a value a long time in the past. A value of | |||
"19760401T005545Z" has been commonly used for this purpose. | "19760401T005545Z" has been commonly used for this purpose. | |||
8.1. Proximity Property | 8.1. Proximity Property | |||
Property Name: PROXIMITY | Property Name: PROXIMITY | |||
Purpose: This property indicates that a location based trigger is | Purpose: This property indicates that a location-based trigger is | |||
applied to an alarm. | applied to an alarm. | |||
Value Type: TEXT | Value Type: TEXT | |||
Property Parameters: IANA and non-standard property parameters can | Property Parameters: IANA and nonstandard property parameters can be | |||
be specified on this property. | specified on this property. | |||
Conformance: This property can be specified within "VALARM" calendar | Conformance: This property can be specified within "VALARM" calendar | |||
components. | components. | |||
Description: This property is used to indicate that an alarm has a | Description: This property is used to indicate that an alarm has a | |||
location-based trigger. Its value identifies the action that will | location-based trigger. Its value identifies the action that will | |||
trigger the alarm. | trigger the alarm. | |||
When the property value is set to "ARRIVE", the alarm is triggered | When the property value is set to "ARRIVE", the alarm is triggered | |||
when the calendar user agent arrives in the vicinity of one or | when the calendar user agent arrives in the vicinity of one or | |||
more locations. When set to "DEPART", the alarm is triggered when | more locations. When set to "DEPART", the alarm is triggered when | |||
the calendar user agent departs from the vicinity of one or more | the calendar user agent departs from the vicinity of one or more | |||
locations. Each location which MUST be specified with a | locations. Each location MUST be specified with a "VLOCATION" | |||
"VLOCATION" component. Note that the meaning of "vicinity" in | component. Note that the meaning of "vicinity" in this context is | |||
this context is implementation defined. | implementation defined. | |||
When the property value is set to "CONNECT", the alarm is | When the property value is set to "CONNECT", the alarm is | |||
triggered when the calendar user agent connects to a automobile to | triggered when the calendar user agent connects to an automobile | |||
which is has been paired via Bluetooth(R) [BTcore]. When set to | to which it has been paired via Bluetooth [BTcore]. When set to | |||
"DISCONNECT", the alarm is triggered when the calendar user agent | "DISCONNECT", the alarm is triggered when the calendar user agent | |||
disconnects from a automobile to which it has been paired via | disconnects from an automobile to which it has been paired via | |||
Bluetooth(R). Note that neither current implementations of | Bluetooth. Note that neither current implementations of proximity | |||
proximty alarms nor this document have a mechanism to target a | alarms nor this document have a mechanism to target a particular | |||
particular automobile. Such a mechanism may be specified in a | automobile. Such a mechanism may be specified in a future | |||
future extension. | extension. | |||
Format Definition: This property is defined by the following | Format Definition: This property is defined by the following | |||
notation: | notation: | |||
proximity = "PROXIMITY" *proximityparam ":" proximityvalue CRLF | proximity = "PROXIMITY" *proximityparam ":" proximityvalue CRLF | |||
proximityparam = ( | proximityparam = ( | |||
; the following is OPTIONAL, | ; the following is OPTIONAL | |||
; and MAY occur more than once | ; and MAY occur more than once | |||
(";" other-param) | (";" other-param) | |||
) | ) | |||
proximityvalue = "ARRIVE" / "DEPART" / | proximityvalue = "ARRIVE" / "DEPART" / | |||
"CONNECT" / "DISCONNECT" / iana-token / x-name | "CONNECT" / "DISCONNECT" / iana-token / x-name | |||
8.2. Example | 8.2. Example | |||
The following example shows a VALARM component with a proximity | The following example shows a "VALARM" component with a proximity | |||
trigger set to trigger when the device running the calendar user | trigger set to trigger when the device running the calendar user | |||
agent leaves the vicinity defined by the URL property in the | agent leaves the vicinity defined by the URL property in the | |||
VLOCATION component. Note use of the "u=" parameter with the "geo" | "VLOCATION" component. Note use of the "u=" parameter with the 'geo' | |||
URI to define the uncertainty of the location determination. | URI to define the uncertainty of the location determination. | |||
BEGIN:VALARM | BEGIN:VALARM | |||
UID:77D80D14-906B-4257-963F-85B1E734DBB6 | UID:77D80D14-906B-4257-963F-85B1E734DBB6 | |||
ACTION:DISPLAY | ACTION:DISPLAY | |||
TRIGGER;VALUE=DATE-TIME:19760401T005545Z | TRIGGER;VALUE=DATE-TIME:19760401T005545Z | |||
DESCRIPTION:Remember to buy milk | DESCRIPTION:Remember to buy milk | |||
PROXIMITY:DEPART | PROXIMITY:DEPART | |||
BEGIN:VLOCATION | BEGIN:VLOCATION | |||
UID:123456-abcdef-98765432 | UID:123456-abcdef-98765432 | |||
NAME:Office | NAME:Office | |||
URL:geo:40.443,-79.945;u=10 | URL:geo:40.443,-79.945;u=10 | |||
END:VLOCATION | END:VLOCATION | |||
END:VALARM | END:VALARM | |||
9. Security Considerations | 9. Security Considerations | |||
In addition to the security properties of iCalendar (see Section 7 of | In addition to the security properties of iCalendar (see Section 7 of | |||
[RFC5545]), VALARMs, if not monitored properly, can be used to | [RFC5545]), a "VALARM", if not monitored properly, can be used to | |||
disturb users and/or leak personal information. For instance, an | disturb users and/or leak personal information. For instance, an | |||
undesirable audio alert could cause embarassment. An unwanted | undesirable audio alert could cause embarrassment; an unwanted | |||
display alert could be considered an annoyance. Or an email alert | display alert could be considered an annoyance; or an email alert | |||
could be used to leak a user's location to a third party or to send | could be used to leak a user's location to a third party or to send | |||
unsolicited email to multiple users. Therefore, CalDAV clients and | unsolicited email to multiple users. Therefore, CalDAV clients and | |||
servers that accept iCalendar data from a third party (e.g. via iTIP | servers that accept iCalendar data from a third party (e.g., via | |||
iCalendar Transport-Independent Interoperability Protocol (iTIP) | ||||
[RFC5546], a subscription feed, or a shared calendar) SHOULD remove | [RFC5546], a subscription feed, or a shared calendar) SHOULD remove | |||
all VALARMs from the data prior to storing in their calendar system. | each "VALARM" from the data prior to storing in their calendar | |||
system. | ||||
Security considerations related to unique identifiers for VALARMs are | Security considerations related to unique identifiers for "VALARM" | |||
discussed in Section 4. | are discussed in Section 4. | |||
10. Privacy Considerations | 10. Privacy Considerations | |||
Proximity VALARMs, if not used carefully, can leak a user's past, | A proximity "VALARM", if not used carefully, can leak a user's past, | |||
present, or future location. For instance, storing an iCalendar | present, or future location. For instance, storing an iCalendar | |||
resource containing proxmity VALARMs to a shared calendar on CalDAV | resource containing proximity "VALARM"s to a shared calendar on | |||
server can expose to anyone that has access to that calendar the | CalDAV server can expose to anyone that has access to that calendar | |||
user's intent to leave from or arrive at a particular location at | the user's intent to leave from or arrive at a particular location at | |||
some future time. Furthermore, if a CalDAV client updates the shared | some future time. Furthermore, if a CalDAV client updates the shared | |||
iCalendar resource with an ACKNOWLEDGED property when the alarm is | iCalendar resource with an "ACKNOWLEDGED" property when the alarm is | |||
triggered, will leak the exact date and time that the user left from | triggered, this will leak the exact date and time that the user left | |||
or arrived at the location. Therefore, CalDAV clients that implement | from or arrived at the location. Therefore, CalDAV clients that | |||
proximity alarms SHOULD give users the option of storing and/or | implement proximity alarms SHOULD give users the option of storing | |||
acknowledging the alarms on the local device only and not storing the | and/or acknowledging the alarms on the local device only and not | |||
alarm and/or acknowledgment on a remote server. | storing the alarm and/or acknowledgement on a remote server. | |||
Privacy considerations related to unique identifiers for VALARMs are | Privacy considerations related to unique identifiers for "VALARM" are | |||
discussed in Section 4. | discussed in Section 4. | |||
11. IANA Considerations | 11. IANA Considerations | |||
11.1. Property Registrations | 11.1. Property Registrations | |||
This document defines the following new iCalendar properties to be | This document defines the following new iCalendar properties that | |||
added to the registry defined in Section 8.2.3 of [RFC5545] and | have been added to the "Properties" registry defined in Section 8.2.3 | |||
located here: <https://www.iana.org/assignments/icalendar#properties> | of [RFC5545] and located here: <https://www.iana.org/assignments/ | |||
icalendar>. | ||||
+--------------+---------+----------------------+ | +==============+=========+=======================+ | |||
| Property | Status | Reference | | | Property | Status | Reference | | |||
+--------------+---------+----------------------+ | +==============+=========+=======================+ | |||
| ACKNOWLEDGED | Current | RFCXXXX, Section 6.1 | | | ACKNOWLEDGED | Current | RFC 9074, Section 6.1 | | |||
| PROXIMITY | Current | RFCXXXX, Section 8.1 | | +--------------+---------+-----------------------+ | |||
+--------------+---------+----------------------+ | | PROXIMITY | Current | RFC 9074, Section 8.1 | | |||
+--------------+---------+-----------------------+ | ||||
Table 1: Additions to the Properties Registry | ||||
11.2. Relationship Types Registry | 11.2. Relationship Types Registry | |||
This document defines the following new iCalendar relationship type | This document defines the following new iCalendar relationship type | |||
to be added to the registry defined in Section 8.3.8 of [RFC5545] and | that has been added to the "Relationship Types" registry defined in | |||
located here: <https://www.iana.org/assignments/ | Section 8.3.8 of [RFC5545] and located here: | |||
icalendar#relationship-types> | <https://www.iana.org/assignments/icalendar>. | |||
+-------------------+---------+----------------------+ | +===================+=========+=======================+ | |||
| Relationship Type | Status | Reference | | | Relationship Type | Status | Reference | | |||
+-------------------+---------+----------------------+ | +===================+=========+=======================+ | |||
| SNOOZE | Current | RFCXXXX, Section 7.1 | | | SNOOZE | Current | RFC 9074, Section 7.1 | | |||
+-------------------+---------+----------------------+ | +-------------------+---------+-----------------------+ | |||
11.3. Proximity Value Registry | Table 2: Addition to the Relationship Types Registry | |||
This document creates a new iCalendar registry for values of the | 11.3. Proximity Values Registry | |||
"PROXIMITY" property located here: <https://www.iana.org/assignments/ | ||||
icalendar#proximity-values> | A new iCalendar registry for values of the "PROXIMITY" property has | |||
been created and is located here: <https://www.iana.org/assignments/ | ||||
icalendar>. | ||||
Additional values MAY be used, provided the process described in | Additional values MAY be used, provided the process described in | |||
Section 8.2.1 of [RFC5545] is used to register them, using the | Section 8.2.1 of [RFC5545] is used to register them, using the | |||
template in Section 8.2.6 of [RFC5545]. | template in Section 8.2.6 of [RFC5545]. | |||
The following table has been used to initialize the Proximity Value | The following table has been used to initialize the Proximity Value | |||
Registry. | Registry. | |||
+------------+---------+----------------------+ | +============+=========+=======================+ | |||
| Value | Status | Reference | | | Value | Status | Reference | | |||
+------------+---------+----------------------+ | +============+=========+=======================+ | |||
| ARRIVE | Current | RFCXXXX, Section 8.1 | | | ARRIVE | Current | RFC 9074, Section 8.1 | | |||
| DEPART | Current | RFCXXXX, Section 8.1 | | +------------+---------+-----------------------+ | |||
| CONNECT | Current | RFCXXXX, Section 8.1 | | | DEPART | Current | RFC 9074, Section 8.1 | | |||
| DISCONNECT | Current | RFCXXXX, Section 8.1 | | +------------+---------+-----------------------+ | |||
+------------+---------+----------------------+ | | CONNECT | Current | RFC 9074, Section 8.1 | | |||
+------------+---------+-----------------------+ | ||||
12. Acknowledgments | | DISCONNECT | Current | RFC 9074, Section 8.1 | | |||
+------------+---------+-----------------------+ | ||||
This specification came about via discussions at the Calendaring and | ||||
Scheduling Consortium. Also, thanks to the following for providing | ||||
feedback: Bernard Desruisseaux, Mike Douglass, Jacob Farkas, Jeffrey | ||||
Harris, Ciny Joy, Barry Leiba, and Daniel Migault. | ||||
13. References | Table 3: Initial Contents of the Proximity | |||
Values Registry | ||||
13.1. Normative References | 12. References | |||
[I-D.ietf-calext-eventpub-extensions] | 12.1. Normative References | |||
Douglass, M., "Event Publishing Extensions to iCalendar", | ||||
draft-ietf-calext-eventpub-extensions-18 (work in | ||||
progress), January 2021. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | ||||
Specifications: ABNF", STD 68, RFC 5234, | ||||
DOI 10.17487/RFC5234, January 2008, | ||||
<https://www.rfc-editor.org/info/rfc5234>. | ||||
[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>. | |||
[RFC5870] Mayrhofer, A. and C. Spanring, "A Uniform Resource | [RFC5870] Mayrhofer, A. and C. Spanring, "A Uniform Resource | |||
Identifier for Geographic Locations ('geo' URI)", | Identifier for Geographic Locations ('geo' URI)", | |||
RFC 5870, DOI 10.17487/RFC5870, June 2010, | RFC 5870, DOI 10.17487/RFC5870, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5870>. | <https://www.rfc-editor.org/info/rfc5870>. | |||
[RFC7986] Daboo, C., "New Properties for iCalendar", RFC 7986, | [RFC7986] Daboo, C., "New Properties for iCalendar", RFC 7986, | |||
DOI 10.17487/RFC7986, October 2016, | DOI 10.17487/RFC7986, October 2016, | |||
<https://www.rfc-editor.org/info/rfc7986>. | <https://www.rfc-editor.org/info/rfc7986>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
13.2. Informative References | [RFC9073] Douglass, M., "Event Publishing Extensions to iCalendar", | |||
RFC 9073, DOI 10.17487/RFC9073, August 2021, | ||||
<https://www.rfc-editor.org/info/rfc9073>. | ||||
12.2. Informative References | ||||
[BTcore] Bluetooth Special Interest Group, "Bluetooth Core | [BTcore] Bluetooth Special Interest Group, "Bluetooth Core | |||
Specification Version 5.0", December 2016, | Specification Version 5.0 Feature Overview", December | |||
<https://www.bluetooth.com/specifications/bluetooth-core- | 2016, <https://www.bluetooth.com/bluetooth-resources/ | |||
specification>. | bluetooth-5- go-faster-go-further/>. | |||
[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>. | |||
[RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent | [RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent | |||
Interoperability Protocol (iTIP)", RFC 5546, | Interoperability Protocol (iTIP)", RFC 5546, | |||
DOI 10.17487/RFC5546, December 2009, | DOI 10.17487/RFC5546, December 2009, | |||
<https://www.rfc-editor.org/info/rfc5546>. | <https://www.rfc-editor.org/info/rfc5546>. | |||
Appendix A. Change History (To be removed by RFC Editor before | Acknowledgements | |||
publication) | ||||
Changes in ietf-06: | ||||
1. Corrected timestamps in snooze example. | ||||
2. Editorial changes from Benjamim Kaduk. | ||||
Changes in ietf-05: | ||||
1. Updated to use VLOCATION components rather than (deprecated) | ||||
STRUCTURED-LOCATION properties for proximity alarms. | ||||
2. Reorganized and clarified the process of snoozing an alarm and | ||||
added an example. | ||||
3. Noted that there is currently no mechanism for specifying a | ||||
particular automobile for CONNECT/DISCONNECT proximity alarms. | ||||
4. Replaced the term "spam" with new wording in Security | ||||
Considerations. | ||||
5. Addressed IESG comments from Benjamim Kaduk. | ||||
6. Addressed IESG comments from Robert Wilton. | ||||
7. Addressed IESG comments Alissa Cooper. | ||||
Changes in ietf-04: | ||||
1. Addressed security review comments from Valery Smyslov. | ||||
2. Addressed Genart review comments from Roni Even. | ||||
3. Added text addressing management of Proximity Value Registry. | ||||
Changes in ietf-03: | ||||
1. Fixed ABNF to be properly extended. | ||||
2. Addressed AD review comments from Barry Leiba. | ||||
Changes in ietf-02: | ||||
1. Addressed some WGLC comments from Daniel Migault. | ||||
Changes in ietf-01: | ||||
1. Reintroduced the RELATED-TO property for VALARMs and the SNOOZE | ||||
value for the RELTYPE property parameter. | ||||
2. Add Privacy Considerations section. | ||||
Changes in ietf-00: | ||||
1. Submitted as CALEXT draft. | ||||
Changes in daboo-05: | ||||
1. Added Murchison as editor. | ||||
2. Updated keywords boilerplate. | ||||
3. Added reference to UID security/privacy recommendations. | ||||
4. Removed default alarms. | ||||
5. Removed ALARM-AGENT property. | ||||
6. Added text about using TRIGGER value in the past in addition to | ||||
ACTION:NONE to have a default alarm be ignored. | ||||
7. Removed text about related alarms. | ||||
8. Removed URL alarm action. | ||||
9. Added reference to draft-ietf-calext-eventpub-extensions for | ||||
STRUCTURED-LOCATION. | ||||
10. Added CONNECT and DISCONNECT PROXIMITY property values. | ||||
11. Added Security Considerations. | ||||
12. Editorial fixes. | ||||
Changes in daboo-04: | ||||
1. Changed "ID" to "AGENT-ID". | ||||
2. Add more text on using "ACKNOWLEDGED" property. | ||||
3. Add "RELATED-TO" as a valid property for VALARMs. | ||||
4. Add "SNOOZE" relationship type for use with VALARMs. | ||||
5. State that "TRIGGER" is typically ignored in proximity alarms. | ||||
6. Added "PROXIMITY" value registry. | ||||
7. Added a lot more detail on default alarms including new action | ||||
and property. | ||||
Changes in daboo-03: none - resubmission of -02 | ||||
Changes in daboo-02: | ||||
1. Updated to 5545 reference. | ||||
2. Clarified use of absolute trigger in UTC in snooze alarms | ||||
3. Snooze alarms should be removed when completed | ||||
4. Removed status and replaced last-triggered by acknowledged | ||||
property | ||||
5. Added location-based trigger | ||||
6. IANA registry tables added | ||||
Changes in daboo-01: | ||||
1. Removed DESCRIPTION as an allowed property in the URI alarm. | ||||
2. Added statement about what to do when ALARM-AGENT is not present. | ||||
3. Allow multiple ALARM-AGENT properties to be present. | ||||
4. Removed SNOOZE-UNTIL - snoozing now accomplished by creating a | ||||
new VALARM. | ||||
5. Remove VALARM by reference section. | ||||
6. Added more detail to CalDAV default alarms. | This specification came about via discussions at The Calendaring and | |||
Scheduling Consortium. Also, thanks to the following for providing | ||||
feedback: Bernard Desruisseaux, Mike Douglass, Jacob Farkas, Jeffrey | ||||
Harris, Ciny Joy, Barry Leiba, and Daniel Migault. | ||||
Authors' Addresses | Authors' Addresses | |||
Cyrus Daboo | Cyrus Daboo | |||
Apple Inc. | Apple Inc. | |||
1 Infinite Loop | 1 Infinite Loop | |||
Cupertino, CA 95014 | Cupertino, CA 95014 | |||
USA | United States of America | |||
Email: cyrus@daboo.name | Email: cyrus@daboo.name | |||
URI: http://www.apple.com/ | URI: http://www.apple.com/ | |||
Kenneth Murchison (editor) | Kenneth Murchison (editor) | |||
Fastmail US LLC | Fastmail US LLC | |||
1429 Walnut St, Suite 1201 | Suite 1201 | |||
Philadephia, PA 19102 | 1429 Walnut St | |||
USA | Philadelphia, PA 19102 | |||
United States of America | ||||
Email: murch@fastmailteam.com | Email: murch@fastmailteam.com | |||
URI: http://www.fastmail.com/ | URI: http://www.fastmail.com/ | |||
End of changes. 102 change blocks. | ||||
374 lines changed or deleted | 257 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |