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