<?xml version="1.0" encoding="UTF-8"?>
<metanorma xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="2.8.5" schema-version="v2.1.5" flavor="cc">
<bibdata type="standard">
<title language="en" type="main">The iCalendar VINSTANCE Component</title>
<docidentifier primary="true" type="CalConnect">CC/WD 51014:2016</docidentifier><docnumber>51014</docnumber><date type="published"><on>2016-10-28</on></date><contributor><role type="author"/><organization>
<name>CalConnect</name>
</organization></contributor><contributor><role type="author"/><person>
<name><completename>Cyrus Daboo</completename></name>
<affiliation><organization>
<name>Apple Inc.</name>
</organization></affiliation></person></contributor><contributor><role type="author"><description>committee</description></role><organization>
<name>CalConnect</name>
<subdivision type="Technical committee">
<name>CALENDAR</name>
</subdivision></organization></contributor><contributor><role type="publisher"/><organization>
<name>CalConnect</name>
</organization></contributor><edition>1</edition><version><revision-date>2016-10-28</revision-date></version><language>en</language><script>Latn</script><abstract><p>This document updates the iCalendar (<eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/>) specification to allow a more compact representation of overridden recurrence instances.</p>
</abstract><status><stage>working-draft</stage></status><copyright><from>2016</from><owner><organization>
<name>CalConnect</name>
</organization></owner></copyright><ext><doctype>standard</doctype><flavor>cc</flavor></ext></bibdata><metanorma-extension><semantic-metadata><stage-published>false</stage-published></semantic-metadata>
<presentation-metadata><toc-heading-levels>2</toc-heading-levels><html-toc-heading-levels>2</html-toc-heading-levels><doc-toc-heading-levels>2</doc-toc-heading-levels><pdf-toc-heading-levels>2</pdf-toc-heading-levels></presentation-metadata></metanorma-extension>
<boilerplate><copyright-statement>

<clause id="_6c6eea80-3831-33c2-b4bb-e8ad57b53394" obligation="normative"><p id="_2ab85ea2-7b09-dc91-7da2-a5c839526e21">© 2016 The Calendaring and Scheduling Consortium, Inc.</p>
</clause>
</copyright-statement>

<license-statement>

<clause id="_c4364fd8-2f9b-8fdb-cf27-c7a37bb0b74a" obligation="normative">
<title id="_5ad8fb30-fcae-1072-87a2-407e6b4939ec">Warning for Drafts</title>
<p id="_0426ba5a-69d0-b41e-5aa5-7bdbfb2f6938">This document is not a CalConnect Standard. It is distributed for review and         comment, and is subject to change without notice and may not be referred to as         a Standard. Recipients of this draft are invited to submit, with their         comments, notification of any relevant patent rights of which they are aware         and to provide supporting documentation.</p>
</clause>
</license-statement>

<legal-statement>

<clause id="_30bb02f9-a03f-937c-b3bb-0058ec7c185d" obligation="normative"><p id="_4997ac1f-fe23-c399-660a-4ca594a6abda">All rights reserved. Unless otherwise specified, no part of this         publication may be reproduced or utilized otherwise in any form or by any         means, electronic or mechanical, including photocopying, or posting on the         internet or an intranet, without prior written permission. Permission can         be requested from the address below.</p>
</clause>
</legal-statement>

<feedback-statement>

<clause id="_525641bf-9235-cdcb-5b80-9232a01ea9cc" obligation="normative"><p id="_9c7e0878-01cd-c6a2-8060-5caf3135b547" anchor="boilerplate-name">The Calendaring and Scheduling Consortium, Inc.</p>

<p id="_851786db-d5f1-a086-bdb1-3bd48dc4f17c" anchor="boilerplate-address">4390 Chaffin Lane<br/> McKinleyville<br/> California 95519<br/> United States of America<br/> <br/> <link target="mailto:copyright@calconnect.org"/><br/> <link target="https://www.calconnect.org">www.calconnect.org</link></p>
</clause>
</feedback-statement>
</boilerplate><preface><abstract id="_71291846-54b0-3ebf-8f58-cf55cd5401dd"><title id="_37c298bf-5619-a5c6-817b-d777b5ead0b1">Abstract</title><p id="_5b67eb38-1bec-c1dd-4eac-dd8a8bd2a0b3">This document updates the iCalendar (<eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/>) specification to allow a more compact representation of overridden recurrence instances.</p>
</abstract><introduction id="_a7c00d76-c92e-421e-f9da-328de799d417" obligation="informative">
<title id="_2b2e98d1-114a-3da4-8556-01ae0a724280">Introduction</title>
<p id="_0f749c7e-205e-4b1c-3949-47909c3df880">The iCalendar <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/> data format is in widespread use to represent calendar data. iCalendar has a data model that supports the concept of recurring, or repeating, events (or other types of objects such as tasks). With repeating events, it is often the case that one particular instance may differ from the rest. In that case iCalendar requires that all the data for that event be included, even though only a small portion of it may be different. For long lived recurring events with lots of attendees present, this can often result in a significant increase in the size of the iCalendar data as many instances get overridden.</p>

<p id="_3733f9ee-010b-68de-1b1a-6e309dc7e9c2">This specification updates the iCalendar data model to support a new iCalendar component that can be used to represent just the changes in an overridden instance, rather than having to include everything describing it. This can significantly reduce the size of the iCalendar data, leading to reductions in network I/O (with resultant savings in battery usage on mobile devices), and storage requirements, on clients, servers, and associated databases.</p>
</introduction></preface><sections>

<clause id="_f054d4ec-a253-8ebe-e0e1-76268fe031b6" type="scope" obligation="normative">
<title id="_f70b6ff6-6131-0e24-81e1-850dbe94b63d">Scope</title>
<p id="_0601bda6-5d55-2588-8654-1459304e8cf2">This document updates the iCalendar (<eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/>) specification to allow a more compact representation of overridden recurrence instances.</p>
</clause>



<terms id="_02c8bc97-c159-6108-c2ed-e6a3b84613b5" obligation="normative">
<title id="_dfb2eab2-f980-6365-3c47-81d0eb272962">Terms and definitions</title><p id="_e5876e78-fa42-efa9-f5ba-a93535689e8d">No terms and definitions are listed in this document.</p>
</terms>

<clause id="_dae3cf84-d405-97ac-c951-d78083dd6499" obligation="normative">
<title id="_906e1f04-55bb-222d-e6d1-8bdd18b506f4">Terms and Definitions</title>
<p id="_8e4067a5-ed81-5882-f995-d5902c3121e8">The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in  <eref type="inline" bibitemid="RFC2119" citeas="IETF RFC 2119"/>.</p>

<p id="_2079b015-c638-ee9a-53ca-5994e39a372b">The notation used in this memo is the ABNF notation of <eref type="inline" bibitemid="RFC5234" citeas="IETF RFC 5234"/> as used by iCalendar  <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/>. Any syntax elements shown below that are not explicitly defined in this specification come from iCalendar  <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/>, CalDAV <eref type="inline" bibitemid="RFC4791" citeas="IETF RFC 4791"/>, and [draft-patch].</p>
</clause>

<clause id="_5f44ca52-c685-6e4a-9bd1-8363e28bfb0f" obligation="normative">
<title id="_3a89569f-a759-b819-6222-70cea8da5b74">Overview</title>
<p id="_fdf0c694-1b69-6f93-04ba-6ebe0b6b8737">Recurring events (or other types of component) in iCalendar are defined by the presence of “RRULE”, “RDATE”, and “EXDATE” properties in a “master component”. Those rules produce a set of “generated instances”. “Generated instances” do not need to have a representation in the iCalendar data, as their content can be inferred from the “master component”. In some cases specific “generated instances” are changed, resulting in an “overridden instance”. An “overridden instance” is represented in iCalendar as an “overridden component”, which has the same “UID” property value as the “master component”, and a “RECURRENCE-ID” property whose value matches the start time of the corresponding “generated instance” (which can be different from the actual start time of the “overridden instance”).</p>

<p id="_34cccc5d-7141-96ac-e16d-3be6dba59cb9">For example, consider the following daily recurring event, with no overridden instances. This event defines a set of generated instances for 20160902, 20160903, 20160904, etc.</p>

<sourcecode id="_160878ad-b474-6bd3-130c-7631eff5eaa9" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
END:VEVENT
END:VCALENDAR</body></sourcecode>


<p id="_7f8ed9cd-25ae-c205-953e-bea0d74b13f9">If the summary of the second instance needs to be changed, the resulting iCalendar object would be:</p>

<sourcecode id="_541a688a-4b6f-05fd-3936-058c4358f7e8" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
END:VEVENT
BEGIN:VEVENT
UID:1234
RECURRENCE-ID;VALUE=DATE:20160903
DTSTART;VALUE=DATE:20160903
DURATION:PT1H
SUMMARY:Override second instance
LOCATION:My office
END:VEVENT
END:VCALENDAR</body></sourcecode>


<p id="_6e60c635-13df-8ce2-785e-daed4ba6cf9e">As can be seen, the overridden component for 20160903 duplicates many iCalendar properties from the master component, with the “SUMMARY” property being different, “RECURRENCE-ID” added, and “DTSTART” adjusted to the start time of the instance. All the other properties are the same as the corresponding ones in the master component. Using the new representation described by this specification, this iCalendar object would appear as:</p>

<sourcecode id="_bf58efdb-27f4-0504-ab6c-84463e38e466" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
BEGIN:VINSTANCE
RECURRENCE-ID;VALUE=DATE:20160903
SUMMARY:Override second instance
END:VINSTANCE
END:VEVENT
END:VCALENDAR</body></sourcecode>


<p id="_28925ac7-8b8e-a713-d99f-337732ea684d">In this case the “VINSTANCE” component is used to encapsulate just those iCalendar properties that are different from the generated instance — just “SUMMARY” in this case. The new representation is just over 80% of the size of the traditional representation, giving a small, but not insignificant, reduction in size. But as more overrides are needed, or as more properties are added to the master component, the savings will increase dramatically.</p>
</clause>

<clause id="_21e85214-7852-10fe-666c-9bf5dd73efd3" anchor="vinstance-component" obligation="normative">
<title id="_9aace1c3-3a07-db20-07b4-2c13f9906a3b">VINSTANCE Component</title>
<p id="_b1062f33-5b59-3883-cc64-64a1458d5ce2">This specification defines the new “VINSTANCE” component, which is used to represent just the differences between a generated instance, derived from the master component, and the actual overridden instance that will be used instead of the generated instance.</p>

<p id="_04ac1bee-0d32-d628-1b8b-08480d99e16e">“VINSTANCE” components MUST only appear as sub-components within master components (e.g., they can only appear as sub-components of components that include at least one of either “RRULE” or “RDATE” properties).</p>

<p id="_e5eb22cb-39af-1b7c-c00b-e6aef3f3066b">Each “VINSTANCE” component MUST include a “RECURRENCE-ID” property with a value that identifies the instance being overridden. Multiple “VINSTANCE” components can appear within a single master component, but each MUST have a unique “RECURRENCE-ID” property value. Unlike traditional overridden components, “VINSTANCE” components MUST NOT include a “UID” property (the effective “UID” is that of the master component enclosing the “VINSTANCE” component).</p>

<p id="_9b30b173-858d-b131-8570-4ba805a238f5">The iCalendar components and properties within a “VINSTANCE” component are interpreted as follows:</p>

<ol id="_cc202490-2a2f-d344-9d5d-5cf8bcfd8368" type="arabic"><li><p id="_054e7029-8fda-969c-1484-96622c16aeac">Any component appearing in “VINSTANCE” is treated as an addition or update to the corresponding generated instance (see  <xref target="instance-components"/>).</p>
</li>
<li><p id="_0dea0473-4450-7023-ba8f-b1c2a2da0c8e">Any property (excluding “RECURRENCE-ID” and “INSTANCE-DELETE”) appearing in “VINSTANCE” is treated as an addition or update to the corresponding generated instance (see  <xref target="instance-properties"/>).</p>
</li>
<li><p id="_119c7adb-6d8a-72eb-d0fc-b17866115629">Any “INSTANCE-DELETE” property appearing in “VINSTANCE” indicates the removal of a component or property from the corresponding generated instance (see <xref target="instance-delete"/>)</p>
</li>
</ol>
</clause>

<clause id="_4448cb54-2bb2-bf08-f4ab-d39171986d83" anchor="instance-components" obligation="normative">
<title id="_e74ae5be-0046-9844-6ff2-5f63d49f25a9">Adding or Updating Components in an Overridden Instance</title>
<p id="_e28e6cf9-b111-ddd0-1d73-30e63fc191d1">All sub-components in the master component MUST have a “UID” property with a value that is unique (at least within that master component). This allows such sub-components to be easily identified for the purposes of indicating whether a “VINSTANCE” is adding, updating, or deleting a sub-component.</p>

<p id="_c8591c33-02f1-d4d0-7e3e-f6b32a453c50">Any iCalendar component defined in the “VINSTANCE” component (referred to here as the “instance component”), other than a “PATCH” component [draft-patch], is treated as either an addition to the generated instance, or as an update of an existing component in the generated instance, as follows:</p>

<ol id="_d242a6e7-042f-3e22-9730-32db3d64e363" type="arabic"><li><p id="_ec5f8815-3782-d46d-6e59-7ce4d30df1ef">If the generated instance does not contain a sub-component with a “UID” property value matching that of the instance component, then the instance component is an addition to the generated instance.</p>
</li>
<li><p id="_a814402e-d304-ca35-09d1-f9b21d816026">If a sub-component of the generated instance contains a “UID” property with a value that matches that of the instance component, then the instance component replaces the matching one in the generated instance.</p>
</li>
</ol>

<p id="_a026e32c-c187-78fe-c415-ac056953d45c">Alternatively, a sub-component can be “incrementally” updated by use of a “PATCH” component [draft-patch] that targets the sub-component. A “PATCH” component is created by determining the difference between the sub-component in the overridden instance and the matching sub-component in the generated instance. The “PATCH-TARGET” property value in the “PATCH” component is specified as a path relative to the overridden component targeting the sub-component by its “UID” property value (e.g., if a “VALARM” component inside a “VEVENT” component is being updated, the “PATCH-TARGET” property value would be “/VALARM[UID=1234]” (assuming that the “UID” property value of the sub-component being updated is “1234”). The “PATCH” component is then added as a sub-component of the “VINSTANCE” component representing the overridden instance.</p>

<p id="_14e6f354-f275-d016-6bfd-317c647ba89a">When expanding a “VINSTANCE” component into an overridden component, any “PATCH” sub-components are used to update sub-components in the generated instance, by applying the patch processing rules to those sub-components.</p>
</clause>

<clause id="_4bb6f60b-285d-706b-cd7c-6314c4542294" anchor="instance-properties" obligation="normative">
<title id="_30661ca2-dac2-7541-2afc-ef7b8963bacf">Adding or Updating Properties in an Overridden Instance</title>
<p id="_e7e0ec14-c85e-4619-63b2-4b8abf037c69">Any iCalendar property (other than “RECURRENCE-ID” and “INSTANCE-DELETE”) defined in the “VINSTANCE” component (referred to here as the “instance property”) is treated as either an addition to the generated instance, or as an update of an existing property in the generated instance. A “INSTANCE-ACTION” <xref target="instanceaction"/> property parameter can be defined on instance properties and is used to control how they are processed. The following rules are used to process such properties:</p>

<ol id="_723b0889-0f94-9897-a7f3-5b802e395c70" type="arabic"><li><p id="_ef1df348-9d1a-a99d-5ffd-6d53015aa7f3">If the instance property does not contain an “INSTANCE-ACTION” property parameter, or contains an “INSTANCE-ACTION” property parameter with the default value “BYNAME”, then all properties with the same name in the generated instance are replaced by the instance property.</p>
</li>
<li><p id="_1b08bc4d-ecba-b061-c069-90b1102055ac">If the instance property contains an “INSTANCE-ACTION” property parameter with the value “CREATE”, then the instance property is added to the generated instance.</p>
</li>
<li><p id="_99691ad4-d97b-41a4-0f6e-454c06e0ce37">If the instance property contains an “INSTANCE-ACTION” property parameter with the value “UPDATE”, then all properties with the same name and same value in the generated instance have their parameters updated or removed as follows: .. Any parameter name appended to the “UPDATE” parameter value with a “~” separator is used to remove matching parameters from the derived instance. .. Any parameters, other than “INSTANCE-ACTION”, replace any parameters with the same name in the derived instance, or are added to the derived instance if no there is no parameter with the same name.</p>
</li>
<li><p id="_b4c4e05d-5177-8c6f-9752-42359552a3db">If the instance property contains an “INSTANCE-ACTION” property parameter with the value starting with “BYPARAM”, then all properties with the same name and a property parameter that matches the one that is part of the “INSTANCE-ACTION” property value, in the generated instance are replaced by the instance property.</p>
</li>
</ol>

<p id="_03feeb1f-0070-7904-0b72-f0bf5f2fbc7d">The “INSTANCE-ACTION=BYNAME” operation is used for adding or updating “singleton” properties — properties that only appear once in a given iCalendar component (e.g., “DTSTART”, “DTEND”, “LOCATION”, etc).</p>

<p id="_d09a28fc-5039-90cc-cd57-576abdc7b88b">The “INSTANCE-ACTION=CREATE” operation is used for adding “multi-occurring” properties — properties that can appear more than once in a given iCalendar component (e.g., “ATTENDEE”, “ATTACH”, “EXDATE”, etc).</p>

<p id="_2cce3e0b-640c-57f4-1284-189576786d15">The “INSTANCE-ACTION=UPDATE” operation is used for updating parameters on a specific “multi-occurring” property that can be uniquely identified by its value (e.g., the “ATTENDEE” property can appear multiple times in a “VEVENT” component, but each property will have a unique value in that component). This operation cannot be used when the value of the property is being changed. Instead, the “INSTANCE-ACTION=BYPARAM” operation can be used to identify the property being replaced.</p>

<p id="_c691047b-aa70-9297-1d94-51383a171a09">The “INSTANCE-ACTION=BYPARAM” operation is used for updating a specific “multi-occurring” property that can be uniquely identified by a parameter value that is the same as one in the instance property.</p>

<p id="_7dc15b7d-288d-1559-cf61-5ebd188043a2">There may be some situations where a multi-occurring property cannot be uniquely identified. In such cases, the solution to updating one or more of them is to use an “INSTANCE-ACTION=BYNAME” to replace all the existing properties with one new one, then use “INSTANCE-ACTION=CREATE” to add back others that are unchanged or also being updated. Whilst this is not ideal, it is anticipated that these situations can be avoided by adding appropriate property parameters with unique values to help disambiguate the multi-occurring properties.</p>
</clause>

<clause id="_20be703d-7bb8-f549-e3bf-d02b40b0819e" anchor="instance-delete" obligation="normative">
<title id="_194f3d1d-e3d2-2af9-62c7-f5d0aabe5137">Deleting Components or Properties from an Overridden Instance</title>
<p id="_f9fdda75-cd9a-4f19-84d7-90723a145fb4">The “INSTANCE-DELETE” property (defined in <xref target="instancedelete"/>) is used to indicate deletion of iCalendar elements from the generated instance. As such, the value of the “INSTANCE-DELETE” property is always a relative path (see <xref target="path"/>) that refers to an element that is an immediate “child” of the generated instance.</p>

<p id="_a695a400-0575-6143-d599-7384100ef597">The following operations are supported:</p>

<dl id="_671b199d-bc2a-0d5a-7d05-bd747fdedc96"><dt>Delete components</dt>
<dd id="_edf7876b-b6a4-3a17-3660-b8f01846cc23"><p id="_38175f4d-68f3-4b06-d32e-26094714a250">the “INSTANCE-DELETE” path value identifies components only. The matching components are removed from the generated instance.</p>
</dd>
<dt>Delete properties</dt>
<dd id="_4791da2f-9652-4c21-7b38-4ac750a03b48"><p id="_50be51b5-ff1d-2920-4d20-ee84765b3c78">the “INSTANCE-DELETE” path value identifies properties only. The matching properties are removed from the generated instance.</p>
</dd>
</dl>
</clause>

<clause id="_b65008d7-aac8-b4bb-e2a5-922f1e9bca16" anchor="path" obligation="normative">
<title id="_ca3220ed-9862-9742-6075-6ad362265f1b">iCalendar Path</title>
<p id="_370d6746-5a19-3685-ffd6-2ce4263cdb7a">This specification makes use of the concept of an “iCalendar path” defined in Section XX of [draft-patch]. This specification only makes use of “relative” paths to identify components or properties directly within a generated instance.</p>
</clause>

<clause id="_f89c7eeb-5396-0898-00d4-8aa289d3a1e3" obligation="normative">
<title id="_5f315df7-7928-b752-185b-5383d68067d0">iCalendar Extensions</title>
<clause id="_367e59a2-8ab9-aca8-64b8-64766b6fdba8" anchor="vinstance" obligation="normative">
<title id="_1e84b628-18c1-eac8-179c-2973fb67beca">VINSTANCE Component</title>
<dl id="_d6ac970e-0ebc-0902-1d30-cd3a02aeaf8a"><dt>Component Name</dt>
<dd id="_bc794761-61bf-f735-abad-2a93e5d38a2b"><p id="_e6623f23-059c-f1f7-a1e1-85c205d63cb0">VINSTANCE</p>
</dd>
<dt>Purpose</dt>
<dd id="_acf752e9-d61a-ce99-e236-26ea91760a5a"><p id="_1c0059f0-f537-74be-4ed9-1c10089ff481">Provide components and properties that are used to indicate the difference between a generated instance and an actual overridden instance.</p>
</dd>
<dt>Format Definition</dt>
<dd id="_237a2420-ee81-10b9-dcb7-562e83178e1f"><p id="_8ae033f3-341d-a80c-ea5a-8aa22d214060">A “VINSTANCE” calendar component is defined by the following notation:</p>
<sourcecode id="_5fe952e5-ce6a-c142-fcc4-662f66ab32ba" unnumbered="true"><body>vinstancec    = "BEGIN" ":" "VINSTANCE" CRLF
                  vinstanceprop component
                "END" ":" "VINSTANCE" CRLF
                ; Any sub-component allowed except for
                ; VINSTANCE itself. PATCH sub-components
                ; are used for incremental updates.

vinstanceprop = *(
                 ;
                 ; The following is REQUIRED,
                 ; but MUST NOT occur more than once.
                 ;
                 recurid /
                 ;
                 ; The following are OPTIONAL,
                 ; and MAY occur more than once.
                 ;
                 instancedelete / other-prop
                 ;
               )

other-prop  = ( iana-prop / x-prop )</body></sourcecode>

</dd>
<dt>Description</dt>
<dd id="_d37ebcd3-4c2a-86dc-d69e-c09f035c972c"><p id="_ed8edbea-a4a4-d0fb-9b55-4a4aea8de278">This component is used to define an overridden instance of a master component that can include changes to the generated instance, such as component or property additions updates, or deletions. See <xref target="vinstance-component"/> for details.</p>
</dd>
</dl>
</clause>

<clause id="_767e5d06-4889-ed12-94d2-1c27b0dbdae1" anchor="instancedelete" obligation="normative">
<title id="_edf544cf-56e0-4a91-cf42-4acb3cf00abd">INSTANCE-DELETE Property</title>
<dl id="_ecda34ad-fe33-c223-117d-d301148ed484"><dt>Property Name</dt>
<dd id="_a535789e-6a7f-9c39-9bed-3e36321940d4"><p id="_5b22e8b7-7d5d-e18d-0cb0-c73e8c9506f7">INSTANCE-DELETE</p>
</dd>
<dt>Purpose</dt>
<dd id="_c0a9514a-8495-1be8-e659-cf0971809829"><p id="_92e7a587-2bbf-b51d-c505-a652f2da9681">This property specifies a relative path identifying one or more components or properties to be removed from a generated instance.</p>
</dd>
<dt>Value Type</dt>
<dd id="_6b834eb0-8dea-5d20-9ade-40c4e09f7042"><p id="_0f0e5b83-a5d1-5ace-4374-45577fdd644c">TEXT</p>
</dd>
<dt>Property Parameters</dt>
<dd id="_56dd2aa1-77d5-1fdd-1504-bab7dccfb1a1"><p id="_fc10d50d-255a-86b9-c87d-a817909776a6">IANA and nonstandard property parameters can be specified on this property.</p>
</dd>
<dt>Conformance</dt>
<dd id="_cb24ba07-af46-a428-3758-35d0309a4355"><p id="_8cecf601-abb5-e2d6-5799-e0843e8e0d0d">This property can be specified within a “VINSTANCE” component only.</p>
</dd>
<dt>Description</dt>
<dd id="_9c755cb3-f2bb-11f8-fee6-a5025fc76b23"><p id="_218b33bc-ead9-c83f-9e22-79bb45b5a920">This property is used to match iCalendar components or properties that will be deleted. The path value is always a relative path for only immediate components and properties within the generated instance, and interpreted as described in  <xref target="instance-delete"/>.</p>
</dd>
<dt>Format Definition</dt>
<dd id="_222eeb92-9a0e-410e-8197-f41757c1a9f5"><p id="_b2664d9a-395d-be5e-cac0-bd3e5966a0f1">This property is defined by the following notation:</p>
<sourcecode id="_f40b0b25-28b2-5347-e15c-23bc6b0484ea" unnumbered="true"><body>idelete       = "INSTANCE-DELETE ideleteparam ":" ideletepath CRLF

ideleteparam  = *(";" other-param)

ideletepath   = comp-path / prop-path
                  ; from Section XX of [draft-patch]</body></sourcecode>

</dd>
<dt>Example</dt>
<dd id="_e926ec89-21f7-2018-61d3-bac646213e67"><p id="_7728b59e-b7d1-7406-0181-a02d855ad31b">The following are examples of this property:</p>
<sourcecode id="_d1ce0482-4c55-c904-28ee-0be994061e89" unnumbered="true"><body>INSTANCE-DELETE:/VALARM[UID=1234]
INSTANCE-DELETE:#ATTENDEE[=mailto:cyrus@example.com]</body></sourcecode>

</dd>
</dl>
</clause>

<clause id="_931c4a8c-8af6-c478-72d6-609b58f26a37" anchor="instanceaction" obligation="normative">
<title id="_fbfba1e5-2250-2f00-a3a3-7d918f16fdad">INSTANCE-ACTION Property Parameter</title>
<dl id="_a23d1a7c-98a4-e32a-e2cd-d77b227a45cf"><dt>Parameter Name</dt>
<dd id="_be5911ed-6c37-7c45-a8ef-8231b5e8251f"><p id="_b70c3e81-d919-6cfa-689b-3d789713aac4">INSTANCE-ACTION</p>
</dd>
<dt>Purpose</dt>
<dd id="_f25fdf3b-33fd-7729-806a-fb514b2b56e6"><p id="_e472634b-0559-d0b9-5dbf-40992c0cbd74">To specify whether the property should be added or replaced.</p>
</dd>
<dt>Description</dt>
<dd id="_7e36d12d-8966-4fb7-e7c2-77ee1c748e9c"><p id="_cd7fcec3-0ecd-07ee-a618-55ce4bef0b70">This property parameter can be specified on properties contained in a “VINSTANCE” component and MUST NOT be specified on properties outside of a “VINSTANCE” component. This property parameter specifies whether the associated property should be added to the generated instance or should replace existing properties in the generated instance. In the latter case, the property parameter also specifies how to match existing properties. The processing of this property parameter is described in  <xref target="instance-properties"/>.</p>
</dd>
<dt>Format Definition</dt>
<dd id="_357e24f3-b103-60a1-9473-ebcc98478703"><p id="_217d6a65-117f-841e-cf73-f83a23e44d1c">This parameter is defined by the following notation:</p>
<sourcecode id="_9b7659d7-ebe8-14f2-e3d9-59fa1857ac3b" unnumbered="true"><body>iactionparam    = "INSTANCE-ACTION" "="
                    iactioncreate /
                    iactionupdate /
                    iactionbyname /
                    iactionbyparam /
                    iana-token /     ; IANA registered value
                    x-name           ; Experimental value

iactioncreate   = "CREATE"
                ; Always add property to the generated instance.

iactionupdate   = "UPDATE" *["~" param-name]
                ; Always update or remove parameters on properties
                ; with the same name and value in the generated
                ; instance.

iactionbyname   = "BYNAME"
                ; Always replace properties with the same name
                ; in the generated instance.
                ; This value is the default and MAY be omitted.

iactionbyparam  = DQUOTE "BYPARAM" param-match   DQUOTE
                ; Always replace properties with the same name
                ; and parameter name/value in the generated
                ; instance.</body></sourcecode>

</dd>
<dt>Examples</dt>
<dd id="_1cf77dae-42aa-04f6-1955-fc9e79381d1b"><p id="_97a4a972-6e99-5876-1981-462d4ce2629d">The following are examples of this property parameter:</p>
<sourcecode id="_42b72328-d162-6653-e3f5-bd47f1498c8e" unnumbered="true"><body>ATTENDEE;INSTANCE-ACTION=UPDATE~RSVP;PARTSTAT=NEEDS-ACTION:
 mailto:cyrus@example.com
DESCRIPTION;INSTANCE-ACTION="BYPARAM@LANGUAGE=en_GB";LANGUAGE=en_US:
 Meeting to discuss VINSTANCE</body></sourcecode>

</dd>
</dl>
</clause>
</clause>

<clause id="_b9804de9-52fc-f78c-28c4-448d66bc80ac" obligation="normative">
<title id="_5429eeb5-3bac-106b-9b8c-dee2ced3fa62">Conversion to/from VINSTANCE</title>
<p id="_cc718808-6c77-1356-e557-ae56e5473a56">Any iCalendar processing engine that supports “VINSTANCE” is allowed to convert between the traditional overridden component representation and the “VINSTANCE” based representation when processing iCalendar data. However, iCalendar data SHOULD NOT mix traditional and “VINSTANCE” based representations in the same iCalendar object. However, when iCalendar data is transferred to another system whose support for “VINSTANCE” cannot be confirmed, the iCalendar data being transferred MUST be converted into its traditional overridden component representation.</p>
</clause>

<clause id="_2e143c60-0bdd-7f73-ba46-1068b1987cce" obligation="normative">
<title id="_8929a2b3-a4d0-7361-a64d-7cabb53a6366">Use with iTIP</title>
<p id="_1827ae6c-ff76-624c-6d96-364588bb4558">iTIP <eref type="inline" bibitemid="RFC5546" citeas="IETF RFC 5546"/> defines how iCalendar data can be sent between calendar user agents to schedule calendar components between calendar users. This specification does not define how iCalendar objects using “VINSTANCE” components can be used with iTIP.</p>
</clause>

<clause id="_c659a253-534d-8cdc-1d21-22606fe44769" obligation="normative">
<title id="_1a5637b1-526c-6270-cecd-ee4322757078">Use with CalDAV and HTTP</title>
<p id="_dc80c321-bdb7-6c45-54e9-c664ae933310">The CalDAV <eref type="inline" bibitemid="RFC4791" citeas="IETF RFC 4791"/> calendar access protocol allows clients and servers to exchange iCalendar data.</p>

<p id="_143ccada-9390-caa7-8e68-65f22e0be62c">TBD define protocol changes required in clients and servers to allow negotiated use of VINSTANCE.</p>
</clause>

<clause id="_62841aa4-3bbb-aea0-207d-b2b94aaf717c" obligation="normative">
<title id="_b0d27df0-2b32-bf6c-5669-33f9f6c6cadb">Use with iCalendar VPATCH</title>
<p id="_4e25d2e7-f1bc-99a5-8929-fff41bf546d6">[draft-patch] defines how iCalendar data can updated using a “patch” component that defines the changes between the original and updated data. This generic mechanism works with the new “VINSTANCE” representation introduced by this specification.</p>

<p id="_51369d0b-34f1-3a61-6d46-7a359f2530f8">However, [draft-patch] does define an “implicit” recurrence override mechanism, whereby a patch operation can implicitly create an overridden component in an iCalendar object by only including components and/or properties that are different from the generated instance. An example of an implicit override patch is shown in  <xref target="example_patch_1"/>. Whilst it is possible to explicitly add a “VINSTANCE” component using a patch operation (as shown in  <xref target="example_patch_2"/>), it would be more efficient to allow patch processing engines to create “VINSTANCE” components, rather than full overridden components, when doing an implicit patch operation. This specification extends [draft-patch] to allow patch processing engines to implement an implicit recurrence override patch operation as the addition of appropriate “VINSTANCE” components to the master component (an example is shown in  <xref target="example_patch_3"/>).</p>
</clause>

<clause id="_c6c14821-3859-cc9b-27c1-3f78298d6200" obligation="normative">
<title id="_e499ce8a-263b-a6ad-66ab-485c8bbd5c51">Security Considerations</title>
<p id="_434af326-9444-bd37-8b1f-83c6fa25c6cb">Security considerations described in <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/>, and <eref type="inline" bibitemid="RFC4791" citeas="IETF RFC 4791"/> <tt>MUST</tt> be adhered to. Since this specification merely defines an alternative representation in iCalendar data, it does not introduce any new security considerations.</p>
</clause>

<clause id="_86ce8445-d986-e0f7-0dbb-b81465370923" obligation="normative">
<title id="_0ca99008-0e98-d7f4-eea0-cfddf201982f">Privacy Considerations</title>
<p id="_ff9e05ca-aa46-06f1-a583-407f2512034b">Privacy considerations described in <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/>, and <eref type="inline" bibitemid="RFC4791" citeas="IETF RFC 4791"/> <tt>MUST</tt> be adhered to. Since this specification merely defines an alternative representation in iCalendar data, it does not introduce any new privacy considerations.</p>
</clause>

<clause id="_9dd54896-59af-2647-d3c8-78debe76811b" obligation="normative">
<title id="_2a425188-b827-f472-1104-1f975f79479b">IANA Considerations</title>
<clause id="_3e48a01c-4533-3520-ed26-0fab1c588db8" obligation="normative">
<title id="_8f8dc538-b5c1-42e2-3b6b-ed315d54127e">Component Registrations</title>
<p id="_3abf58e7-2492-0009-0e3e-5ae3bacbf9b3">This document defines the following new iCalendar components to be added to the registry defined in  <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"><localityStack><locality type="section"><referenceFrom>8.3.1</referenceFrom></locality></localityStack></eref>:</p>

<table id="_9111df82-7d0b-fb85-ff52-a6e93864fa13"><thead><tr id="_98d56b58-4e2a-26fa-f95d-ebd2d3076e65"><th id="_ca236099-9240-a98a-bfa5-d8e896fa0561" valign="top" align="center">Component</th>
<th id="_d704ac4b-1bea-8726-3129-71ddeb7fc64f" valign="top" align="center">Status</th>
<th id="_5413fbdf-04e6-fa43-db2a-4e9e43f7fadc" valign="top" align="center">Reference</th>
</tr></thead>
<tbody><tr id="_cfc3dfd3-767d-841b-523a-6d41c22f0f06"><td id="_a5987ce9-f853-0259-4d9d-ca291e54e93f" valign="top" align="center">VINSTANCE</td>
<td id="_6bb51344-88a1-e150-b711-48092eb5f5cb" valign="top" align="center">Current</td>
<td id="_1303b8ac-abc0-bba8-354b-17e3cd649eb0" valign="top" align="center">RFCXXXX, <xref target="vinstance"/></td>
</tr></tbody>
</table>
</clause>

<clause id="_692c7ceb-96da-b36d-6971-ec82c4380e83" obligation="normative">
<title id="_47810c41-04d1-a65a-ce17-72d0bd59e9ab">Property Registrations</title>
<p id="_bbb14c46-1daa-a80e-ef2e-fc06b67bbaa2">This document defines the following new iCalendar properties to be added to the registry defined in  <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"><localityStack><locality type="section"><referenceFrom>8.3.2</referenceFrom></locality></localityStack></eref>:</p>

<table id="_9a39cc0a-9791-104c-e411-e3119d6e036f"><thead><tr id="_0d4f4065-7ecc-67a8-5196-ed5701fadf3a"><th id="_39892513-3784-e4d5-dbfd-1c21738d4ae4" valign="top" align="center">Property</th>
<th id="_b4d9dcb0-7fdd-4ebc-8996-cd2c8da6dcc9" valign="top" align="center">Status</th>
<th id="_ecf870f3-2d6e-b582-f891-d32f44314648" valign="top" align="center">Reference</th>
</tr></thead>
<tbody><tr id="_c7c7c8d4-85f3-d976-1d27-14a83992b0b7"><td id="_b4d1b945-b343-92e3-15f6-32726fceb668" valign="top" align="center">INSTANCE-DELETE</td>
<td id="_1c8f7d8a-4e8b-2ca4-c775-68f4837deb18" valign="top" align="center">Current</td>
<td id="_99347e88-6fac-3c24-4605-688e1a2dc341" valign="top" align="center">RFCXXXX, <xref target="instancedelete"/></td>
</tr></tbody>
</table>
</clause>

<clause id="_79ccdca3-686a-d8b0-3695-7c1f3fa87fa0" obligation="normative">
<title id="_8e6b41be-cb9c-0519-852b-68497b70fdb5">Parameter Registrations</title>
<p id="_b368d1ce-aa1f-2578-49ee-298df0facb9c">This document defines the following new iCalendar parameters to be added to the registry defined in  <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"><localityStack><locality type="section"><referenceFrom>8.3.3</referenceFrom></locality></localityStack></eref>:</p>

<table id="_320de5c9-4e29-6282-36b5-5417f1de64d5"><thead><tr id="_c6667c99-032e-27d4-4d50-a2da96e25f0e"><th id="_be231f18-cc8d-8a92-c4ba-87c6fe8c985d" valign="top" align="center">Property</th>
<th id="_62c374f8-c6e4-7e68-0187-25e2b2618884" valign="top" align="center">Status</th>
<th id="_d592fdd9-aa92-3620-aa6f-af84df8b41f0" valign="top" align="center">Reference</th>
</tr></thead>
<tbody><tr id="_18392a21-811e-a537-f18c-8b944ee8a473"><td id="_afc26d65-5a9d-61c9-5bd2-67a08632849e" valign="top" align="center">INSTANCE-ACTION</td>
<td id="_92e80b3a-5f50-ba03-76f9-43e797f32c3b" valign="top" align="center">Current</td>
<td id="_ba977b40-d86b-4b8b-6eff-da9b4b0f8702" valign="top" align="center">RFCXXXX, <xref target="instanceaction"/></td>
</tr></tbody>
</table>
</clause>

<clause id="_0e45c970-52d2-7628-09d7-2e785f6cb2c1" obligation="normative">
<title id="_ad68cc7b-176e-7e84-78f2-c1ab57e9faf3">Parameter Value Registry</title>
<p id="_dd99f523-2b39-ad1a-6023-895de5c58692">A new IANA registry for iCalendar elements has been added. Additional codes MAY be used, provided the process described in  <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"><localityStack><locality type="section"><referenceFrom>8.2.1</referenceFrom></locality></localityStack></eref> is used to register them, using the template in  <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"><localityStack><locality type="section"><referenceFrom>8.2.6</referenceFrom></locality></localityStack></eref>.</p>

<clause id="_e9af1e88-8527-6436-d853-ab95685162b2" obligation="normative">
<title id="_84f67346-d12e-2055-7cca-0f59af2fbf6d">Instance Action Registry</title>
<p id="_67ea8ed5-1d9e-66b2-c9f2-cb9ea0621268">The following table has been used to initialize the Instance Action Registry:</p>

<table id="_047ca5da-e3ec-77a7-797a-99de73569eef"><thead><tr id="_11a9018b-eae8-167a-02d0-6a4b48cacf0c"><th id="_c64f0ad8-7277-db39-899c-e37f98c2d17e" valign="top" align="center">Instance Action</th>
<th id="_2d3df413-92a2-deba-9632-1301f7bc0678" valign="top" align="center">Status</th>
<th id="_3f74cd1e-4f5e-e34f-a3ad-31445b13145c" valign="top" align="center">Reference</th>
</tr></thead>
<tbody><tr id="_c45d93be-8537-7880-075f-52d07fe0c748"><td id="_304f2372-2ddd-35cd-4fe5-bc179d556ed5" valign="top" align="center">CREATE</td>
<td id="_fdb253e3-b8c5-b312-cbed-5e39a5d32c30" valign="top" align="center">Current</td>
<td id="_3faa8157-e221-e97c-e7d4-99f725a11d7d" valign="top" align="center">RFCXXXX, <xref target="instanceaction"/></td>
</tr><tr id="_e10a167e-67fd-9b1e-0180-3dcf74cb7fbe"><td id="_cbcdbf3a-e267-e003-1608-4aa5b3cdf4f1" valign="top" align="center">UPDATE</td>
<td id="_48538e70-1ba4-cce6-66a0-4c14f8c21e28" valign="top" align="center">Current</td>
<td id="_c81633cc-a274-0c56-6203-1dbb8a3686a2" valign="top" align="center">RFCXXXX, <xref target="instanceaction"/></td>
</tr><tr id="_46bbc0ea-b278-de44-295c-6ad7b176f064"><td id="_b9463391-91c8-2f59-d941-fe1331cc92ef" valign="top" align="center">BYNAME</td>
<td id="_fca72be3-b329-1466-a9fd-2fd9bb88cbc0" valign="top" align="center">Current</td>
<td id="_8674c6d6-380e-ae04-550c-9626717ed51b" valign="top" align="center">RFCXXXX, <xref target="instanceaction"/></td>
</tr><tr id="_03a556fb-b284-9fcc-7362-69e0e6760337"><td id="_495fd5cb-351f-30fd-9587-53fae76d8845" valign="top" align="center">BYPARAM</td>
<td id="_3319a5d5-142f-bcee-f1e9-d8a7ac16a2d4" valign="top" align="center">Current</td>
<td id="_4174474a-0e07-f677-2715-60e6dd15d417" valign="top" align="center">RFCXXXX, <xref target="instanceaction"/></td>
</tr></tbody>
</table>
</clause>
</clause>
</clause>

<clause id="_5f88a0da-5d2a-5b95-9b6e-5dc41ba70973" obligation="normative">
<title id="_b2faa6ac-1885-6e24-47d6-0bba0a76f139">Acknowledgments</title>
<p id="_47833ee7-1c66-3b70-abda-7dd1e893f6f1">Thanks to the following for feedback: Michael Douglass, Ken Murchison.</p>

<p id="_8a57f9ae-2351-3e0e-14bd-d4501622c6f9">This specification originated from work at the Calendaring and Scheduling Consortium, which has helped with the development and testing of implementations.</p>
</clause>




</sections><annex id="_a647a564-f5f0-841e-0c43-7ce39182dd5b" obligation="normative">
<title id="_662df6cd-bd15-fb18-d591-ee26b891c49f">Examples</title>
<clause id="_d31bb087-fc8e-28aa-71c4-00770c75a6bc" obligation="normative">
<title id="_11445871-5a99-f6b8-6f5c-0c65254eccdf">Overridden instance with just the SUMMARY changed</title>
<sourcecode id="_4ed0f1be-7c61-0bde-c570-a02674913746" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
BEGIN:VINSTANCE
RECURRENCE-ID;VALUE=DATE:20160903
SUMMARY:Override second instance
END:VINSTANCE
END:VEVENT
END:VCALENDAR</body></sourcecode>

</clause>

<clause id="_2de8d206-de4f-32fc-9d79-54fa94cf8cc9" obligation="normative">
<title id="_180884bf-34d5-a1fb-7c89-607294b459b2">Overridden instance with a time change and an alarm added</title>
<sourcecode id="_7bb7e81f-d775-8ac1-b456-70286a7da88a" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART:20160902T120000Z
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
BEGIN:VINSTANCE
RECURRENCE-ID:20160903T120000Z
DTSTART:20160903T130000Z
BEGIN:VALARM
UID:4567
ACTION:DISPLAY
TRIGGER:-PT30M
DESCRIPTION:Time to leave
END:VALARM
END:VINSTANCE
END:VEVENT
END:VCALENDAR</body></sourcecode>

</clause>

<clause id="_f2fb1be5-703a-5d5d-bf08-8e7fc219d099" obligation="normative">
<title id="_777408aa-f05d-e4a7-4bc6-47bfb9b45c3a">Overridden instance with a different trigger time for the alarm</title>
<p id="_dd4ede37-2868-0bfc-b450-95197c64f644">This variant shows the “VALARM” being updated by using a “PATCH” component as opposed to include the entire “VALARM” component.</p>

<sourcecode id="_e23e3dd1-4892-920e-faf0-dd593a243e19" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART:20160902T120000Z
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
BEGIN:VALARM
UID:4567
ACTION:DISPLAY
TRIGGER:-PT30M
DESCRIPTION:Time to leave
END:VALARM
BEGIN:VINSTANCE
RECURRENCE-ID:20160903T120000Z
BEGIN:PATCH
PATCH-TARGET:/VALARM[UID=4567]
TRIGGER:-PT5M
END:PATCH
END:VINSTANCE
END:VEVENT
END:VCALENDAR</body></sourcecode>

</clause>

<clause id="_4ee7fd5b-1667-dd45-6312-ac68073ea1f8" obligation="normative">
<title id="_48894a17-d271-ea4c-bdbe-bf2b9f2c3508">Overridden instance without the alarm</title>
<sourcecode id="_a81d4e15-3974-2576-049f-58b64ea7d7eb" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART:20160902T120000Z
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
BEGIN:VALARM
UID:4567
ACTION:DISPLAY
TRIGGER:-PT30M
DESCRIPTION:Time to leave
END:VALARM
BEGIN:VINSTANCE
RECURRENCE-ID:20160903T120000Z
INSTANCE-DELETE:/VALARM[UID=4567]
END:VINSTANCE
END:VEVENT
END:VCALENDAR</body></sourcecode>

</clause>

<clause id="_49370ac8-1ce7-5706-c4d0-596df48c0cd2" obligation="normative">
<title id="_ec9703cb-e11b-e93f-14bd-86e92a6502b2">Two overridden instances with parameter updates</title>
<p id="_50ca91d0-d621-11ed-8b07-5075a584de81">This examples shows two overridden instances. The first one covers the case where an attendee has accepted all but one instance of a recurring meeting, with the one instance being declined. The second one covers the case where an attendee has responded only to one instance of a recurring meeting, with the other instances still waiting for a response.</p>

<sourcecode id="_c4db79a0-6f8b-b526-83fe-ba88506fac5a" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART:20160902T120000Z
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
ORGANIZER;CN=Cyrus Daboo:mailto:cyrus@example.com
ATTENDEE;CN=Cyrus Daboo;PARTSTAT=ACCEPTED:
 mailto:cyrus@example.com
ATTENDEE;CN=Mike Douglass;PARTSTAT=NEEDS-ACTION;
 RSVP=TRUE:mailto:mike@example.com
ATTENDEE;CN=Ken Murchison;PARTSTAT=ACCEPTED:
 mailto:ken@example.com
BEGIN:VINSTANCE
RECURRENCE-ID:20160903T120000Z
ATTENDEE;INSTANCE-ACTION=UPDATE;PARTSTAT=DECLINED:
 mailto:ken@example.com
END:VINSTANCE
BEGIN:VINSTANCE
RECURRENCE-ID:20160904T120000Z
ATTENDEE;INSTANCE-ACTION=UPDATE~RSVP;PARTSTAT=ACCEPTED:
 mailto:mike@example.com
END:VINSTANCE
END:VEVENT
END:VCALENDAR</body></sourcecode>

</clause>
</annex><annex id="_299805ee-9869-b6cd-c2e5-1141fd05dded" obligation="normative">
<title id="_b0b96938-c219-d520-37b9-f4ad829575b3">Patch Examples</title>
<clause id="_8b5447f8-006f-3ab6-9fb4-4ccac0be3d1f" anchor="example_patch_1" obligation="normative">
<title id="_77628aa8-801d-1d6b-186e-fd615366e5bb">Implicit override using patch</title>
<p id="_a80c9c52-78b3-1bf0-5ffe-cb5531fa2fc0">This example shows the implicit addition of an overridden component which has only its “SUMMARY” property changed, via a patch operation.</p>

<p id="_cbb5c034-cca0-8600-288f-4d4034f8c281">Before:</p>

<sourcecode id="_ede786f8-7928-9e21-ef4a-cf71f45c59f5" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
END:VEVENT
END:VCALENDAR</body></sourcecode>


<p id="_2d561916-1145-e404-b2b7-4851fb344d1f">Patch:</p>

<sourcecode id="_0ba50249-457f-4d81-2218-542f66f8eb8f" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VPATCH
UID:DFB887F7-9D1A-4FB2-912B-C91A6203DB8E
DTSTAMP:20160907T111100Z
BEGIN:PATCH
PATCH-TARGET:/VCALENDAR/VEVENT[RID=20160903]
SUMMARY:Override second instance
END:PATCH
END:VPATCH
END:VCALENDAR</body></sourcecode>


<p id="_0485a41f-f846-95e1-1e86-669eb4f49a6b">After:</p>

<sourcecode id="_c38bb351-2c07-20ca-e5d0-26881db5f26d" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
END:VEVENT
BEGIN:VEVENT
UID:1234
RECURRENCE-ID;VALUE=DATE:20160903
DTSTART;VALUE=DATE:20160903
DURATION:PT1H
SUMMARY:Override second instance
LOCATION:My office
END:VEVENT
END:VCALENDAR</body></sourcecode>

</clause>

<clause id="_b1cb2fa7-4784-628f-f7ab-348ce6ef679e" anchor="example_patch_2" obligation="normative">
<title id="_26a2a2db-32c5-443e-c5e7-3d6f57752511">Explicit VINSTANCE override using patch</title>
<p id="_dc2cf4bf-308a-6aa1-4612-8879dbdc1f38">This example shows the explicit addition of an overridden instance using a “VINSTANCE” component, via a patch operation.</p>

<p id="_dd106cc9-9112-1995-9cdd-c87ad2dd8651">Before:</p>

<sourcecode id="_cc500145-feac-eb46-44fd-0eaee454a307" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
END:VEVENT
END:VCALENDAR</body></sourcecode>


<p id="_376e789e-8ee1-befe-8770-8e3d47b01099">Patch:</p>

<sourcecode id="_6005a6ea-150f-a677-24f3-06a179a25a09" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VPATCH
UID:DFB887F7-9D1A-4FB2-912B-C91A6203DB8E
DTSTAMP:20160907T111100Z
BEGIN:PATCH
PATCH-TARGET:/VCALENDAR/VEVENT
BEGIN:VINSTANCE
RECURRENCE-ID;VALUE=DATE:20160903
SUMMARY:Override second instance
END:VINSTANCE
END:PATCH
END:VPATCH
END:VCALENDAR</body></sourcecode>


<p id="_92065c6b-c0cd-5ac3-7ca3-99cd2aada168">After:</p>

<sourcecode id="_eb830db2-b40e-8122-5f50-8471b92c59f2" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
BEGIN:VINSTANCE
RECURRENCE-ID;VALUE=DATE:20160903
SUMMARY:Override second instance
END:VINSTANCE
END:VEVENT
END:VCALENDAR</body></sourcecode>

</clause>

<clause id="_7fb59e4e-6e90-c424-8955-c639c05fc5fd" anchor="example_patch_3" obligation="normative">
<title id="_cbb91b73-c74f-e444-2612-64c9381ef0c9">Implicit VINSTANCE override using patch</title>
<p id="_ac57a5c3-cde7-0ea5-74b2-60c3c2b65e1d">This example shows the implicit addition of an overridden instance using a “VINSTANCE” component, via a patch operation.</p>

<p id="_498979c6-f1f2-d571-d9a3-5b134e5abd0d">Before:</p>

<sourcecode id="_fcf84b04-f311-30c0-586d-ccb1022950aa" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
END:VEVENT
END:VCALENDAR</body></sourcecode>


<p id="_2f3fc801-179f-546e-df85-711d65382bc0">Patch:</p>

<sourcecode id="_ed18a169-19be-98ef-4a3d-7429fa29f417" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VPATCH
UID:DFB887F7-9D1A-4FB2-912B-C91A6203DB8E
DTSTAMP:20160907T111100Z
BEGIN:PATCH
PATCH-TARGET:/VCALENDAR/VEVENT[RID=20160903]
SUMMARY:Override second instance
END:PATCH
END:VPATCH
END:VCALENDAR</body></sourcecode>


<p id="_894cb9c7-a778-74d3-b3bf-abc76054370d">After:</p>

<sourcecode id="_35061a76-a046-8f71-3b79-a34af73718ac" unnumbered="true"><body>BEGIN:VCALENDAR
PRODID:test
VERSION:2.0
BEGIN:VEVENT
UID:1234
DTSTART;VALUE=DATE:20160902
DURATION:PT1H
SUMMARY:Master component
LOCATION:My office
RRULE:FREQ=DAILY
BEGIN:VINSTANCE
RECURRENCE-ID;VALUE=DATE:20160903
SUMMARY:Override second instance
END:VINSTANCE
END:VEVENT
END:VCALENDAR</body></sourcecode>

</clause>
</annex><bibliography><references id="_1733239d-5973-4d72-0089-155e74ff4858" normative="true" obligation="informative">
<title id="_461cd77a-5cfe-f57e-70ab-04e5c4142c2b">Normative references</title><p id="_02b1c060-f2f9-4bc4-035d-e49887f749e3">The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
<bibitem id="_0d9c78ba-037c-9336-a87f-c9e2deb0f7cd" type="standard" schema-version="v1.5.6" anchor="RFC2119">
  <fetched>2026-05-13</fetched>
  
<title type="main">Key words for use in RFCs to Indicate Requirement Levels</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc2119</uri>
  <docidentifier type="IETF" primary="true">RFC 2119</docidentifier>
  <docidentifier type="DOI">10.17487/RFC2119</docidentifier>
  <docnumber>RFC2119</docnumber>
  <date type="published">
    <on>1997-03</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">S.</formatted-initials>          <surname language="en" script="Latn">Bradner</surname>          <completename language="en" script="Latn">S. Bradner</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_3bdac10a-6b1c-ec09-c1d6-02c601f1e523">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</p>

  </abstract>
  <status>
    <stage>BEST CURRENT PRACTICE</stage>
  </status>
  <series>
    
<title>BCP</title>

    <number>14</number>
  </series>
  <series>
    
<title>RFC</title>

    <number>2119</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>Standards</vocab>
  </keyword>
  <keyword>
    <vocab>Track</vocab>
  </keyword>
  <keyword>
    <vocab>Documents</vocab>
  </keyword>
</bibitem>
<bibitem id="_de589169-2b32-bc32-f82e-33f0d1f05002" type="standard" schema-version="v1.5.6" anchor="RFC4791">
  <fetched>2026-05-13</fetched>
  
<title type="main">Calendaring Extensions to WebDAV (CalDAV)</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc4791</uri>
  <docidentifier type="IETF" primary="true">RFC 4791</docidentifier>
  <docidentifier type="DOI">10.17487/RFC4791</docidentifier>
  <docnumber>RFC4791</docnumber>
  <date type="published">
    <on>2007-03</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">C.</formatted-initials>          <surname language="en" script="Latn">Daboo</surname>          <completename language="en" script="Latn">C. Daboo</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">B.</formatted-initials>          <surname language="en" script="Latn">Desruisseaux</surname>          <completename language="en" script="Latn">B. Desruisseaux</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">L.</formatted-initials>          <surname language="en" script="Latn">Dusseault</surname>          <completename language="en" script="Latn">L. Dusseault</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_182989f2-668b-8bc6-0199-22eb5d74a3c3">This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing calendaring and scheduling information based on the iCalendar format.  This document defines the “calendar-access” feature of CalDAV. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <series>
    
<title>RFC</title>

    <number>4791</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>calsched</vocab>
  </keyword>
  <keyword>
    <vocab>calsch</vocab>
  </keyword>
  <keyword>
    <vocab>calcav</vocab>
  </keyword>
  <keyword>
    <vocab>calendar</vocab>
  </keyword>
  <keyword>
    <vocab>calendaring</vocab>
  </keyword>
  <keyword>
    <vocab>scheduling</vocab>
  </keyword>
  <keyword>
    <vocab>webdav</vocab>
  </keyword>
  <keyword>
    <vocab>ical</vocab>
  </keyword>
  <keyword>
    <vocab>icalendar</vocab>
  </keyword>
  <keyword>
    <vocab>itip</vocab>
  </keyword>
  <keyword>
    <vocab>text/calendar</vocab>
  </keyword>
  <keyword>
    <vocab>http</vocab>
  </keyword>
</bibitem>
<bibitem id="_9dc89777-3aaf-df51-1358-f1778b267a81" type="standard" schema-version="v1.5.6" anchor="RFC5234">
  <fetched>2026-05-13</fetched>
  
<title type="main">Augmented BNF for Syntax Specifications: ABNF</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc5234</uri>
  <docidentifier type="IETF" primary="true">RFC 5234</docidentifier>
  <docidentifier type="DOI">10.17487/RFC5234</docidentifier>
  <docnumber>RFC5234</docnumber>
  <date type="published">
    <on>2008-01</on>
  </date>
  <contributor>
    <role type="editor"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">D.</formatted-initials>          <surname language="en" script="Latn">Crocker</surname>          <completename language="en" script="Latn">D. Crocker</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">P.</formatted-initials>          <surname language="en" script="Latn">Overell</surname>          <completename language="en" script="Latn">P. Overell</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_8d5a4f5d-b4ce-76d0-f125-582a9b33db6c">Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF.  It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>INTERNET STANDARD</stage>
  </status>
  <series>
    
<title>STD</title>

    <number>68</number>
  </series>
  <series>
    
<title>RFC</title>

    <number>5234</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>ABNF</vocab>
  </keyword>
  <keyword>
    <vocab>backus-naur form</vocab>
  </keyword>
  <keyword>
    <vocab>augmented backus-naur form</vocab>
  </keyword>
  <keyword>
    <vocab>rule definitions</vocab>
  </keyword>
  <keyword>
    <vocab>encoding</vocab>
  </keyword>
  <keyword>
    <vocab>core lexical analyzer</vocab>
  </keyword>
</bibitem>
<bibitem id="_27a8badc-c6d6-439a-9ef4-9b3866952b47" type="standard" schema-version="v1.5.6" anchor="RFC5545">
  <fetched>2026-05-13</fetched>
  
<title type="main">Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc5545</uri>
  <docidentifier type="IETF" primary="true">RFC 5545</docidentifier>
  <docidentifier type="DOI">10.17487/RFC5545</docidentifier>
  <docnumber>RFC5545</docnumber>
  <date type="published">
    <on>2009-09</on>
  </date>
  <contributor>
    <role type="editor"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">B.</formatted-initials>          <surname language="en" script="Latn">Desruisseaux</surname>          <completename language="en" script="Latn">B. Desruisseaux</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name language="en">Internet Engineering Task Force</name>

      <subdivision type="workgroup">
        
<name>Calendaring and Scheduling Standards Simplification</name>

        <identifier>calsify</identifier>
      </subdivision>
      <abbreviation language="en">IETF</abbreviation>
    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_e436cd19-5f4d-3144-d2f5-2ee586583fa7">This document defines the iCalendar data format for representing and exchanging calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, independent of any particular calendar service or protocol. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <series>
    
<title>RFC</title>

    <number>5545</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>calsify</vocab>
  </keyword>
  <keyword>
    <vocab>calsched</vocab>
  </keyword>
  <keyword>
    <vocab>calsch</vocab>
  </keyword>
  <keyword>
    <vocab>caldav</vocab>
  </keyword>
  <keyword>
    <vocab>calendar</vocab>
  </keyword>
  <keyword>
    <vocab>calendaring</vocab>
  </keyword>
  <keyword>
    <vocab>meeting</vocab>
  </keyword>
  <keyword>
    <vocab>event</vocab>
  </keyword>
  <keyword>
    <vocab>task</vocab>
  </keyword>
  <keyword>
    <vocab>to-do</vocab>
  </keyword>
  <keyword>
    <vocab>journal</vocab>
  </keyword>
  <keyword>
    <vocab>appointment</vocab>
  </keyword>
  <keyword>
    <vocab>agenda</vocab>
  </keyword>
  <keyword>
    <vocab>schedule</vocab>
  </keyword>
  <keyword>
    <vocab>scheduling</vocab>
  </keyword>
  <keyword>
    <vocab>ical</vocab>
  </keyword>
  <keyword>
    <vocab>icalendar</vocab>
  </keyword>
  <keyword>
    <vocab>itip</vocab>
  </keyword>
  <keyword>
    <vocab>imip</vocab>
  </keyword>
  <keyword>
    <vocab>text/calendar</vocab>
  </keyword>
  <keyword>
    <vocab>ischedule</vocab>
  </keyword>
  <keyword>
    <vocab>xCalendar</vocab>
  </keyword>
</bibitem>
<bibitem id="_9e4d2e76-54ad-32d8-0f2c-19470e1afc51" type="standard" schema-version="v1.5.6" anchor="RFC5546">
  <fetched>2026-05-13</fetched>
  
<title type="main">iCalendar Transport-Independent Interoperability Protocol (iTIP)</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc5546</uri>
  <docidentifier type="IETF" primary="true">RFC 5546</docidentifier>
  <docidentifier type="DOI">10.17487/RFC5546</docidentifier>
  <docnumber>RFC5546</docnumber>
  <date type="published">
    <on>2009-12</on>
  </date>
  <contributor>
    <role type="editor"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">C.</formatted-initials>          <surname language="en" script="Latn">Daboo</surname>          <completename language="en" script="Latn">C. Daboo</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name language="en">Internet Engineering Task Force</name>

      <subdivision type="workgroup">
        
<name>Calendaring and Scheduling Standards Simplification</name>

        <identifier>calsify</identifier>
      </subdivision>
      <abbreviation language="en">IETF</abbreviation>
    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_df29a48f-5da8-3781-cace-f3151cf9e360">This document specifies a protocol that uses the iCalendar object specification to provide scheduling interoperability between different calendaring systems. This is done without reference to a specific transport protocol so as to allow multiple methods of communication between systems. Subsequent documents will define profiles of this protocol that use specific, interoperable methods of communication between systems.</p>

    <p id="_e51cac57-2480-b23b-eefd-672b85b9adf9">The iCalendar Transport-Independent Interoperability Protocol (iTIP) complements the iCalendar object specification by adding semantics for group scheduling methods commonly available in current calendaring systems. These scheduling methods permit two or more calendaring systems to perform transactions such as publishing, scheduling, rescheduling, responding to scheduling requests, negotiating changes, or canceling. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <relation type="updates">
    <bibitem>
      <formattedref>RFC5545</formattedref>
      <docidentifier type="IETF" primary="true">RFC5545</docidentifier>
    </bibitem>

  </relation>
  <series>
    
<title>RFC</title>

    <number>5546</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>calendar</vocab>
  </keyword>
  <keyword>
    <vocab>scheduling</vocab>
  </keyword>
</bibitem>
</references></bibliography>
</metanorma>
