1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xml:
lang=
"en" xmlns=
"http://www.w3.org/1999/xhtml" lang=
"en"><head>
5 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8">
6 <meta name=
"robots" content=
"index,follow">
7 <meta name=
"creator" content=
"rfcmarkup version 1.74">
8 <link rel=
"icon" href=
"http://tools.ietf.org/images/rfc.png" type=
"image/png">
9 <link rel=
"shortcut icon" href=
"http://tools.ietf.org/images/rfc.png" type=
"image/png">
10 <title>RFC
4791 - Calendaring Extensions to WebDAV (CalDAV)
</title>
12 <style type=
"text/css">
17 h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
22 font-family: monospace;
33 font-family: monospace;
39 page-break-before: always;
42 text-decoration: none;
49 h1, h2, h3, h4, h5, h6 {
55 text-decoration: none;
62 .grey, .grey a:link, .grey a:visited {
66 background-color: #EEE;
69 border-top:
7px solid #EEE;
71 .bgwhite { background-color: white; }
72 .bgred { background-color: #F44; }
73 .bggrey { background-color: #
666; }
74 .bgbrown { background-color: #
840; }
75 .bgorange { background-color: #FA0; }
76 .bgyellow { background-color: #EE0; }
77 .bgmagenta{ background-color: #F4F; }
78 .bgblue { background-color: #
66F; }
79 .bgcyan { background-color: #
4DD; }
80 .bggreen { background-color: #
4F4; }
82 .legend { font-size:
90%; }
83 .cplate { font-size:
70%; border: solid grey
1px; }
87 <script type=
"text/javascript"><!--
88 function addHeaderTags() {
89 var spans = document.getElementsByTagName("span");
90 for (var i=0; i < spans.length; i++) {
93 var level = elem.getAttribute("class");
94 if (level == "h1" || level == "h2" || level == "h3" || level == "h4" || level == "h5" || level == "h6") {
95 elem.innerHTML = "<"+level+">"+elem.innerHTML+"</"+level+">";
100 var legend_html = "Colour legend:<br /> <table> <tr><td>Unknown:</td> <td><span class='cplate bgwhite'> </span></td></tr> <tr><td>Draft:</td> <td><span class='cplate bgred'> </span></td></tr> <tr><td>Informational:</td> <td><span class='cplate bgorange'> </span></td></tr> <tr><td>Experimental:</td> <td><span class='cplate bgyellow'> </span></td></tr> <tr><td>Best Common Practice:</td><td><span class='cplate bgmagenta'> </span></td></tr> <tr><td>Proposed Standard:</td><td><span class='cplate bgblue'> </span></td></tr> <tr><td>Draft Standard:</td> <td><span class='cplate bgcyan'> </span></td></tr> <tr><td>Standard:</td> <td><span class='cplate bggreen'> </span></td></tr> <tr><td>Historic:</td> <td><span class='cplate bggrey'> </span></td></tr> <tr><td>Obsolete:</td> <td><span class='cplate bgbrown'> </span></td></tr> </table>";
101 function showElem(id) {
102 var elem = document.getElementById(id);
103 elem.innerHTML = eval(id+"_html");
104 elem.style.visibility='visible';
106 function hideElem(id) {
107 var elem = document.getElementById(id);
108 elem.style.visibility='hidden';
113 </head><body onload=
"addHeaderTags()">
114 <div style=
"height: 13px;">
115 <div onmouseover=
"this.style.cursor='pointer';" onclick=
"showElem('legend');" onmouseout=
"hideElem('legend')" style=
"height: 6px; position: absolute;" class=
"pre noprint docinfo bgblue" title=
"Click for colour legend."> </div>
116 <div id=
"legend" class=
"docinfo noprint pre legend" style=
"border: 1px solid rgb(51, 68, 85); padding: 4px 9px 5px 7px; position: absolute; top: 4px; left: 4ex; visibility: hidden; background-color: white;" onmouseover=
"showElem('legend');" onmouseout=
"hideElem('legend');">
119 <span class=
"pre noprint docinfo top">[
<a href=
"http://tools.ietf.org/html/" title=
"Document search and retrieval page">RFCs/IDs
</a>] [
<a href=
"http://tools.ietf.org/rfc/rfc4791.txt" title=
"Plaintext version of this document">Plain
</a>] [From
<a href=
"http://tools.ietf.org/html/draft-dusseault-caldav">draft-dusseault-caldav
</a>]
</span><br>
120 <span class=
"pre noprint docinfo"> </span><br>
121 <span class=
"pre noprint docinfo"> PROPOSED STANDARD
</span><br>
122 <span class=
"pre noprint docinfo"> <a href=
"http://www.rfc-editor.org/errata_search.php?rfc=4791">Errata
</a></span><br>
123 <pre>Network Working Group C. Daboo
124 Request for Comments:
4791 Apple
125 Category: Standards Track B. Desruisseaux
132 <span class=
"h1"><h1>Calendaring Extensions to WebDAV (CalDAV)
</h1></span>
136 This document specifies an Internet standards track protocol for the
137 Internet community, and requests discussion and suggestions for
138 improvements. Please refer to the current edition of the
"Internet
139 Official Protocol Standards" (STD
1) for the standardization state
140 and status of this protocol. Distribution of this memo is unlimited.
144 Copyright (C) The IETF Trust (
2007).
148 This document defines extensions to the Web Distributed Authoring and
149 Versioning (WebDAV) protocol to specify a standard way of accessing,
150 managing, and sharing calendaring and scheduling information based on
151 the iCalendar format. This document defines the
"calendar-access"
174 <span class=
"grey">Daboo, et al. Standards Track [Page
1]
</span>
175 </pre><pre class=
"newpage"><a name=
"page-2" id=
"page-2" href=
"#page-2" class=
"invisible"> </a>
176 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
181 <a href=
"#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-5">5</a>
182 <a href=
"#section-1.1">1.1</a>. Notational Conventions . . . . . . . . . . . . . . . . . .
<a href=
"#page-5">5</a>
183 <a href=
"#section-1.2">1.2</a>. XML Namespaces and Processing . . . . . . . . . . . . . .
<a href=
"#page-5">5</a>
184 <a href=
"#section-1.3">1.3</a>. Method Preconditions and Postconditions . . . . . . . . .
<a href=
"#page-6">6</a>
185 <a href=
"#section-2">2</a>. Requirements Overview . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-6">6</a>
186 <a href=
"#section-3">3</a>. Calendaring Data Model . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-7">7</a>
187 <a href=
"#section-3.1">3.1</a>. Calendar Server . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-7">7</a>
188 <a href=
"#section-3.2">3.2</a>. Recurrence and the Data Model . . . . . . . . . . . . . .
<a href=
"#page-8">8</a>
189 <a href=
"#section-4">4</a>. Calendar Resources . . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-9">9</a>
190 <a href=
"#section-4.1">4.1</a>. Calendar Object Resources . . . . . . . . . . . . . . . .
<a href=
"#page-9">9</a>
191 <a href=
"#section-4.2">4.2</a>. Calendar Collection . . . . . . . . . . . . . . . . . . .
<a href=
"#page-10">10</a>
192 <a href=
"#section-5">5</a>. Calendar Access Feature . . . . . . . . . . . . . . . . . . .
<a href=
"#page-11">11</a>
193 <a href=
"#section-5.1">5.1</a>. Calendar Access Support . . . . . . . . . . . . . . . . .
<a href=
"#page-11">11</a>
194 5.1.1. Example: Using OPTIONS for the Discovery of
195 Calendar Access Support . . . . . . . . . . . . . . .
<a href=
"#page-12">12</a>
196 <a href=
"#section-5.2">5.2</a>. Calendar Collection Properties . . . . . . . . . . . . . .
<a href=
"#page-12">12</a>
197 <a href=
"#section-5.2.1">5.2.1</a>. CALDAV:calendar-description Property . . . . . . . . .
<a href=
"#page-12">12</a>
198 <a href=
"#section-5.2.2">5.2.2</a>. CALDAV:calendar-timezone Property . . . . . . . . . .
<a href=
"#page-13">13</a>
199 <a href=
"#section-5.2.3">5.2.3</a>. CALDAV:supported-calendar-component-set Property . . .
<a href=
"#page-14">14</a>
200 <a href=
"#section-5.2.4">5.2.4</a>. CALDAV:supported-calendar-data Property . . . . . . .
<a href=
"#page-15">15</a>
201 <a href=
"#section-5.2.5">5.2.5</a>. CALDAV:max-resource-size Property . . . . . . . . . .
<a href=
"#page-16">16</a>
202 <a href=
"#section-5.2.6">5.2.6</a>. CALDAV:min-date-time Property . . . . . . . . . . . .
<a href=
"#page-17">17</a>
203 <a href=
"#section-5.2.7">5.2.7</a>. CALDAV:max-date-time Property . . . . . . . . . . . .
<a href=
"#page-18">18</a>
204 <a href=
"#section-5.2.8">5.2.8</a>. CALDAV:max-instances Property . . . . . . . . . . . .
<a href=
"#page-19">19</a>
205 <a href=
"#section-5.2.9">5.2.9</a>. CALDAV:max-attendees-per-instance Property . . . . . .
<a href=
"#page-19">19</a>
206 <a href=
"#section-5.2.10">5.2.10</a>. Additional Precondition for PROPPATCH . . . . . . . .
<a href=
"#page-20">20</a>
207 <a href=
"#section-5.3">5.3</a>. Creating Resources . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-20">20</a>
208 <a href=
"#section-5.3.1">5.3.1</a>. MKCALENDAR Method . . . . . . . . . . . . . . . . . .
<a href=
"#page-20">20</a>
209 <a href=
"#section-5.3.1.1">5.3.1.1</a>. Status Codes . . . . . . . . . . . . . . . . . . .
<a href=
"#page-22">22</a>
210 <a href=
"#section-5.3.1.2">5.3.1.2</a>. Example: Successful MKCALENDAR Request . . . . . .
<a href=
"#page-23">23</a>
211 <a href=
"#section-5.3.2">5.3.2</a>. Creating Calendar Object Resources . . . . . . . . . .
<a href=
"#page-25">25</a>
212 5.3.2.1. Additional Preconditions for PUT, COPY, and
213 MOVE . . . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-26">26</a>
214 5.3.3. Non-Standard Components, Properties, and Parameters .
28
215 <a href=
"#section-5.3.4">5.3.4</a>. Calendar Object Resource Entity Tag . . . . . . . . .
<a href=
"#page-28">28</a>
216 <a href=
"#section-6">6</a>. Calendaring Access Control . . . . . . . . . . . . . . . . . .
<a href=
"#page-29">29</a>
217 <a href=
"#section-6.1">6.1</a>. Calendaring Privilege . . . . . . . . . . . . . . . . . .
<a href=
"#page-29">29</a>
218 <a href=
"#section-6.1.1">6.1.1</a>. CALDAV:read-free-busy Privilege . . . . . . . . . . .
<a href=
"#page-29">29</a>
219 <a href=
"#section-6.2">6.2</a>. Additional Principal Property . . . . . . . . . . . . . .
<a href=
"#page-30">30</a>
220 <a href=
"#section-6.2.1">6.2.1</a>. CALDAV:calendar-home-set Property . . . . . . . . . .
<a href=
"#page-30">30</a>
221 <a href=
"#section-7">7</a>. Calendaring Reports . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-31">31</a>
222 <a href=
"#section-7.1">7.1</a>. REPORT Method . . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-31">31</a>
223 <a href=
"#section-7.2">7.2</a>. Ordinary Collections . . . . . . . . . . . . . . . . . . .
<a href=
"#page-31">31</a>
224 <a href=
"#section-7.3">7.3</a>. Date and Floating Time . . . . . . . . . . . . . . . . . .
<a href=
"#page-32">32</a>
225 <a href=
"#section-7.4">7.4</a>. Time Range Filtering . . . . . . . . . . . . . . . . . . .
<a href=
"#page-32">32</a>
226 <a href=
"#section-7.5">7.5</a>. Searching Text: Collations . . . . . . . . . . . . . . . .
<a href=
"#page-33">33</a>
230 <span class=
"grey">Daboo, et al. Standards Track [Page
2]
</span>
231 </pre><pre class=
"newpage"><a name=
"page-3" id=
"page-3" href=
"#page-3" class=
"invisible"> </a>
232 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
235 <a href=
"#section-7.5.1">7.5.1</a>. CALDAV:supported-collation-set Property . . . . . . .
<a href=
"#page-34">34</a>
236 <a href=
"#section-7.6">7.6</a>. Partial Retrieval . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-34">34</a>
237 <a href=
"#section-7.7">7.7</a>. Non-Standard Components, Properties, and Parameters . . .
<a href=
"#page-35">35</a>
238 <a href=
"#section-7.8">7.8</a>. CALDAV:calendar-query REPORT . . . . . . . . . . . . . . .
<a href=
"#page-36">36</a>
239 <a href=
"#section-7.8.1">7.8.1</a>. Example: Partial Retrieval of Events by Time Range . .
<a href=
"#page-38">38</a>
240 <a href=
"#section-7.8.2">7.8.2</a>. Example: Partial Retrieval of Recurring Events . . . .
<a href=
"#page-42">42</a>
241 <a href=
"#section-7.8.3">7.8.3</a>. Example: Expanded Retrieval of Recurring Events . . .
<a href=
"#page-45">45</a>
242 7.8.4. Example: Partial Retrieval of Stored Free Busy
243 Components . . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-48">48</a>
244 <a href=
"#section-7.8.5">7.8.5</a>. Example: Retrieval of To-Dos by Alarm Time Range . . .
<a href=
"#page-50">50</a>
245 <a href=
"#section-7.8.6">7.8.6</a>. Example: Retrieval of Event by UID . . . . . . . . . .
<a href=
"#page-51">51</a>
246 <a href=
"#section-7.8.7">7.8.7</a>. Example: Retrieval of Events by PARTSTAT . . . . . . .
<a href=
"#page-53">53</a>
247 <a href=
"#section-7.8.8">7.8.8</a>. Example: Retrieval of Events Only . . . . . . . . . .
<a href=
"#page-55">55</a>
248 <a href=
"#section-7.8.9">7.8.9</a>. Example: Retrieval of All Pending To-Dos . . . . . . .
<a href=
"#page-59">59</a>
249 <a href=
"#section-7.8.10">7.8.10</a>. Example: Attempt to Query Unsupported Property . . . .
<a href=
"#page-62">62</a>
250 <a href=
"#section-7.9">7.9</a>. CALDAV:calendar-multiget REPORT . . . . . . . . . . . . .
<a href=
"#page-63">63</a>
251 7.9.1. Example: Successful CALDAV:calendar-multiget REPORT .
64
252 <a href=
"#section-7.10">7.10</a>. CALDAV:free-busy-query REPORT . . . . . . . . . . . . . .
<a href=
"#page-66">66</a>
253 <a href=
"#section-7.10.1">7.10.1</a>. Example: Successful CALDAV:free-busy-query REPORT . .
<a href=
"#page-68">68</a>
254 <a href=
"#section-8">8</a>. Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-69">69</a>
255 <a href=
"#section-8.1">8.1</a>. Client-to-Client Interoperability . . . . . . . . . . . .
<a href=
"#page-69">69</a>
256 <a href=
"#section-8.2">8.2</a>. Synchronization Operations . . . . . . . . . . . . . . . .
<a href=
"#page-69">69</a>
257 <a href=
"#section-8.2.1">8.2.1</a>. Use of Reports . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-69">69</a>
258 <a href=
"#section-8.2.1.1">8.2.1.1</a>. Restrict the Time Range . . . . . . . . . . . . .
<a href=
"#page-69">69</a>
259 <a href=
"#section-8.2.1.2">8.2.1.2</a>. Synchronize by Time Range . . . . . . . . . . . .
<a href=
"#page-70">70</a>
260 <a href=
"#section-8.2.1.3">8.2.1.3</a>. Synchronization Process . . . . . . . . . . . . .
<a href=
"#page-70">70</a>
261 <a href=
"#section-8.2.2">8.2.2</a>. Restrict the Properties Returned . . . . . . . . . . .
<a href=
"#page-72">72</a>
262 <a href=
"#section-8.3">8.3</a>. Use of Locking . . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-72">72</a>
263 <a href=
"#section-8.4">8.4</a>. Finding Calendars . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-72">72</a>
264 <a href=
"#section-8.5">8.5</a>. Storing and Using Attachments . . . . . . . . . . . . . .
<a href=
"#page-74">74</a>
265 <a href=
"#section-8.5.1">8.5.1</a>. Inline Attachments . . . . . . . . . . . . . . . . . .
<a href=
"#page-74">74</a>
266 <a href=
"#section-8.5.2">8.5.2</a>. External Attachments . . . . . . . . . . . . . . . . .
<a href=
"#page-75">75</a>
267 <a href=
"#section-8.6">8.6</a>. Storing and Using Alarms . . . . . . . . . . . . . . . . .
<a href=
"#page-76">76</a>
268 <a href=
"#section-9">9</a>. XML Element Definitions . . . . . . . . . . . . . . . . . . .
<a href=
"#page-77">77</a>
269 <a href=
"#section-9.1">9.1</a>. CALDAV:calendar XML Element . . . . . . . . . . . . . . .
<a href=
"#page-77">77</a>
270 <a href=
"#section-9.2">9.2</a>. CALDAV:mkcalendar XML Element . . . . . . . . . . . . . .
<a href=
"#page-77">77</a>
271 <a href=
"#section-9.3">9.3</a>. CALDAV:mkcalendar-response XML Element . . . . . . . . . .
<a href=
"#page-78">78</a>
272 <a href=
"#section-9.4">9.4</a>. CALDAV:supported-collation XML Element . . . . . . . . . .
<a href=
"#page-78">78</a>
273 <a href=
"#section-9.5">9.5</a>. CALDAV:calendar-query XML Element . . . . . . . . . . . .
<a href=
"#page-78">78</a>
274 <a href=
"#section-9.6">9.6</a>. CALDAV:calendar-data XML Element . . . . . . . . . . . . .
<a href=
"#page-79">79</a>
275 <a href=
"#section-9.6.1">9.6.1</a>. CALDAV:comp XML Element . . . . . . . . . . . . . . .
<a href=
"#page-80">80</a>
276 <a href=
"#section-9.6.2">9.6.2</a>. CALDAV:allcomp XML Element . . . . . . . . . . . . . .
<a href=
"#page-81">81</a>
277 <a href=
"#section-9.6.3">9.6.3</a>. CALDAV:allprop XML Element . . . . . . . . . . . . . .
<a href=
"#page-81">81</a>
278 <a href=
"#section-9.6.4">9.6.4</a>. CALDAV:prop XML Element . . . . . . . . . . . . . . .
<a href=
"#page-82">82</a>
279 <a href=
"#section-9.6.5">9.6.5</a>. CALDAV:expand XML Element . . . . . . . . . . . . . .
<a href=
"#page-82">82</a>
280 <a href=
"#section-9.6.6">9.6.6</a>. CALDAV:limit-recurrence-set XML Element . . . . . . .
<a href=
"#page-83">83</a>
281 <a href=
"#section-9.6.7">9.6.7</a>. CALDAV:limit-freebusy-set XML Element . . . . . . . .
<a href=
"#page-84">84</a>
282 <a href=
"#section-9.7">9.7</a>. CALDAV:filter XML Element . . . . . . . . . . . . . . . .
<a href=
"#page-85">85</a>
286 <span class=
"grey">Daboo, et al. Standards Track [Page
3]
</span>
287 </pre><pre class=
"newpage"><a name=
"page-4" id=
"page-4" href=
"#page-4" class=
"invisible"> </a>
288 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
291 <a href=
"#section-9.7.1">9.7.1</a>. CALDAV:comp-filter XML Element . . . . . . . . . . . .
<a href=
"#page-85">85</a>
292 <a href=
"#section-9.7.2">9.7.2</a>. CALDAV:prop-filter XML Element . . . . . . . . . . . .
<a href=
"#page-86">86</a>
293 <a href=
"#section-9.7.3">9.7.3</a>. CALDAV:param-filter XML Element . . . . . . . . . . .
<a href=
"#page-87">87</a>
294 <a href=
"#section-9.7.4">9.7.4</a>. CALDAV:is-not-defined XML Element . . . . . . . . . .
<a href=
"#page-88">88</a>
295 <a href=
"#section-9.7.5">9.7.5</a>. CALDAV:text-match XML Element . . . . . . . . . . . .
<a href=
"#page-88">88</a>
296 <a href=
"#section-9.8">9.8</a>. CALDAV:timezone XML Element . . . . . . . . . . . . . . .
<a href=
"#page-89">89</a>
297 <a href=
"#section-9.9">9.9</a>. CALDAV:time-range XML Element . . . . . . . . . . . . . .
<a href=
"#page-90">90</a>
298 <a href=
"#section-9.10">9.10</a>. CALDAV:calendar-multiget XML Element . . . . . . . . . . .
<a href=
"#page-94">94</a>
299 <a href=
"#section-9.11">9.11</a>. CALDAV:free-busy-query XML Element . . . . . . . . . . . .
<a href=
"#page-95">95</a>
300 <a href=
"#section-10">10</a>. Internationalization Considerations . . . . . . . . . . . . .
<a href=
"#page-95">95</a>
301 <a href=
"#section-11">11</a>. Security Considerations . . . . . . . . . . . . . . . . . . .
<a href=
"#page-95">95</a>
302 <a href=
"#section-12">12</a>. IANA Considerations . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-96">96</a>
303 <a href=
"#section-12.1">12.1</a>. Namespace Registration . . . . . . . . . . . . . . . . . .
<a href=
"#page-96">96</a>
304 <a href=
"#section-13">13</a>. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-96">96</a>
305 <a href=
"#section-14">14</a>. References . . . . . . . . . . . . . . . . . . . . . . . . . .
<a href=
"#page-97">97</a>
306 <a href=
"#section-14.1">14.1</a>. Normative References . . . . . . . . . . . . . . . . . . .
<a href=
"#page-97">97</a>
307 <a href=
"#section-14.2">14.2</a>. Informative References . . . . . . . . . . . . . . . . . .
<a href=
"#page-98">98</a>
308 <a href=
"#appendix-A">Appendix A
</a>. CalDAV Method Privilege Table (Normative) . . . . . .
<a href=
"#page-99">99</a>
309 <a href=
"#appendix-B">Appendix B
</a>. Calendar Collections Used in the Examples . . . . . .
<a href=
"#page-99">99</a>
342 <span class=
"grey">Daboo, et al. Standards Track [Page
4]
</span>
343 </pre><pre class=
"newpage"><a name=
"page-5" id=
"page-5" href=
"#page-5" class=
"invisible"> </a>
344 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
347 <span class=
"h2"><h2><a name=
"section-1">1</a>. Introduction
</h2></span>
349 The concept of using HTTP [
<a href=
"http://tools.ietf.org/html/rfc2616" title=
""Hypertext Transfer Protocol -- HTTP/1.1"">RFC2616
</a>] and WebDAV [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>] as a basis
350 for a calendar access protocol is by no means a new concept: it was
351 discussed in the IETF CALSCH working group as early as
1997 or
1998.
352 Several companies have implemented calendar access protocols using
353 HTTP to upload and download iCalendar [
<a href=
"http://tools.ietf.org/html/rfc2445" title=
""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445
</a>] objects, and using
354 WebDAV to get listings of resources. However, those implementations
355 do not interoperate because there are many small and big decisions to
356 be made in how to model calendaring data as WebDAV resources, as well
357 as how to implement required features that aren't already part of
358 WebDAV. This document proposes a way to model calendar data in
359 WebDAV, with additional features to make an interoperable calendar
362 <span class=
"h3"><h3><a name=
"section-1.1">1.1</a>. Notational Conventions
</h3></span>
364 The key words
"MUST",
"MUST NOT",
"REQUIRED",
"SHALL",
"SHALL NOT",
365 "SHOULD",
"SHOULD NOT",
"RECOMMENDED",
"MAY", and
"OPTIONAL" in this
366 document are to be interpreted as described in [
<a href=
"http://tools.ietf.org/html/rfc2119" title=
""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119
</a>].
368 The term
"protected" is used in the Conformance field of property
369 definitions as defined in
<a href=
"http://tools.ietf.org/html/rfc3253#section-1.4.2">Section
1.4.2 of [RFC3253]
</a>.
371 When XML element types in the namespaces
"DAV:" and
372 "urn:ietf:params:xml:ns:caldav" are referenced in this document
373 outside of the context of an XML fragment, the string
"DAV:" and
374 "CALDAV:" will be prefixed to the element type names, respectively.
376 <span class=
"h3"><h3><a name=
"section-1.2">1.2</a>. XML Namespaces and Processing
</h3></span>
378 Definitions of XML elements in this document use XML element type
379 declarations (as found in XML Document Type Declarations), described
380 in
<a href=
"#section-3.2">Section
3.2</a> of [
<a href=
"#ref-W3C.REC-xml-20060816" title=
""Extensible Markup Language (XML) 1.0 (Fourth Edition)"">W3C.REC-xml-
20060816</a>].
382 The namespace
"urn:ietf:params:xml:ns:caldav" is reserved for the XML
383 elements defined in this specification, its revisions, and related
384 CalDAV specifications. XML elements defined by individual
385 implementations MUST NOT use the
"urn:ietf:params:xml:ns:caldav"
386 namespace, and instead should use a namespace that they control.
388 The XML declarations used in this document do not include namespace
389 information. Thus, implementers must not use these declarations as
390 the only way to create valid CalDAV properties or to validate CalDAV
391 XML element types. Some of the declarations refer to XML elements
392 defined by WebDAV [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>], which use the
"DAV:" namespace.
393 Wherever such XML elements appear, they are explicitly prefixed with
394 "DAV:" to avoid confusion.
398 <span class=
"grey">Daboo, et al. Standards Track [Page
5]
</span>
399 </pre><pre class=
"newpage"><a name=
"page-6" id=
"page-6" href=
"#page-6" class=
"invisible"> </a>
400 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
403 Also note that some CalDAV XML element names are identical to WebDAV
404 XML element names, though their namespace differs. Care must be
405 taken not to confuse the two sets of names.
407 Processing of XML by CalDAV clients and servers MUST follow the rules
408 described in [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]; in particular,
<a href=
"#section-14">Section
14</a>, and Appendix
3 of
411 <span class=
"h3"><h3><a name=
"section-1.3">1.3</a>. Method Preconditions and Postconditions
</h3></span>
413 A
"precondition" of a method describes the state of the server that
414 must be true for that method to be performed. A
"postcondition" of a
415 method describes the state of the server that must be true after that
416 method has been completed. If a method precondition or postcondition
417 for a request is not satisfied, the response status of the request
418 MUST either be
403 (Forbidden), if the request should not be repeated
419 because it will always fail, or
409 (Conflict), if it is expected
420 that the user might be able to resolve the conflict and resubmit the
423 In order to allow better client handling of
403 and
409 responses, a
424 distinct XML element type is associated with each method precondition
425 and postcondition of a request. When a particular precondition is
426 not satisfied or a particular postcondition cannot be achieved, the
427 appropriate XML element MUST be returned as the child of a top-level
428 DAV:error element in the response body, unless otherwise negotiated
431 <span class=
"h2"><h2><a name=
"section-2">2</a>. Requirements Overview
</h2></span>
433 This section lists what functionality is required of a CalDAV server.
434 To advertise support for CalDAV, a server:
436 o MUST support iCalendar [
<a href=
"http://tools.ietf.org/html/rfc2445" title=
""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445
</a>] as a media type for the calendar
437 object resource format;
439 o MUST support WebDAV Class
1 [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>] (note that [
<a href=
"#ref-rfc2518bis" title=
""HTTP Extensions for Distributed Authoring - WebDAV"">rfc2518bis
</a>]
440 describes clarifications to [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>] that aid interoperability);
442 o MUST support WebDAV ACL [
<a href=
"http://tools.ietf.org/html/rfc3744" title=
""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744
</a>] with the additional privilege
443 defined in
<a href=
"#section-6.1">Section
6.1</a> of this document;
445 o MUST support transport over TLS [
<a href=
"http://tools.ietf.org/html/rfc2246" title=
""The TLS Protocol Version 1.0"">RFC2246
</a>] as defined in [
<a href=
"http://tools.ietf.org/html/rfc2818" title=
""HTTP Over TLS"">RFC2818
</a>]
446 (note that [
<a href=
"http://tools.ietf.org/html/rfc2246" title=
""The TLS Protocol Version 1.0"">RFC2246
</a>] has been obsoleted by [
<a href=
"http://tools.ietf.org/html/rfc4346" title=
""The Transport Layer Security (TLS) Protocol Version 1.1"">RFC4346
</a>]);
448 o MUST support ETags [
<a href=
"http://tools.ietf.org/html/rfc2616" title=
""Hypertext Transfer Protocol -- HTTP/1.1"">RFC2616
</a>] with additional requirements
449 specified in
<a href=
"#section-5.3.4">Section
5.3.4</a> of this document;
454 <span class=
"grey">Daboo, et al. Standards Track [Page
6]
</span>
455 </pre><pre class=
"newpage"><a name=
"page-7" id=
"page-7" href=
"#page-7" class=
"invisible"> </a>
456 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
459 o MUST support all calendaring reports defined in
<a href=
"#section-7">Section
7</a> of this
462 o MUST advertise support on all calendar collections and calendar
463 object resources for the calendaring reports in the DAV:supported-
464 report-set property, as defined in Versioning Extensions to WebDAV
465 [
<a href=
"http://tools.ietf.org/html/rfc3253" title=
""Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning)"">RFC3253
</a>].
467 In addition, a server:
469 o SHOULD support the MKCALENDAR method defined in
<a href=
"#section-5.3.1">Section
5.3.1</a> of
472 <span class=
"h2"><h2><a name=
"section-3">3</a>. Calendaring Data Model
</h2></span>
474 One of the features that has made WebDAV a successful protocol is its
475 firm data model. This makes it a useful framework for other
476 applications such as calendaring. This specification follows the
477 same pattern by developing all features based on a well-described
480 As a brief overview, a CalDAV calendar is modeled as a WebDAV
481 collection with a defined structure; each calendar collection
482 contains a number of resources representing calendar objects as its
483 direct child resource. Each resource representing a calendar object
484 (event, to-do, journal entry, or other calendar components) is called
485 a
"calendar object resource". Each calendar object resource and each
486 calendar collection can be individually locked and have individual
487 WebDAV properties. Requirements derived from this model are provided
488 in
<a href=
"#section-4.1">Section
4.1</a> and
<a href=
"#section-4.2">Section
4.2</a>.
490 <span class=
"h3"><h3><a name=
"section-3.1">3.1</a>. Calendar Server
</h3></span>
492 A CalDAV server is a calendaring-aware engine combined with a WebDAV
493 repository. A WebDAV repository is a set of WebDAV collections,
494 containing other WebDAV resources, within a unified URL namespace.
495 For example, the repository
"http://www.example.com/webdav/" may
496 contain WebDAV collections and resources, all of which have URLs
497 beginning with
"http://www.example.com/webdav/". Note that the root
498 URL,
"http://www.example.com/", may not itself be a WebDAV repository
499 (for example, if the WebDAV support is implemented through a servlet
500 or other Web server extension).
502 A WebDAV repository MAY include calendar data in some parts of its
503 URL namespace, and non-calendaring data in other parts.
505 A WebDAV repository can advertise itself as a CalDAV server if it
506 supports the functionality defined in this specification at any point
510 <span class=
"grey">Daboo, et al. Standards Track [Page
7]
</span>
511 </pre><pre class=
"newpage"><a name=
"page-8" id=
"page-8" href=
"#page-8" class=
"invisible"> </a>
512 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
515 within the root of the repository. That might mean that calendaring
516 data is spread throughout the repository and mixed with non-calendar
517 data in nearby collections (e.g., calendar data may be found in
518 /home/lisa/calendars/ as well as in /home/bernard/calendars/, and
519 non-calendar data in /home/lisa/contacts/). Or, it might mean that
520 calendar data can be found only in certain sections of the repository
521 (e.g., /calendar/). Calendaring features are only required in the
522 repository sections that are or contain calendar object resources.
523 Therefore, a repository confining calendar data to the /calendar/
524 collection would only need to support the CalDAV required features
525 within that collection.
527 The CalDAV server or repository is the canonical location for
528 calendar data and state information. Clients may submit requests to
529 change data or download data. Clients may store calendar objects
530 offline and attempt to synchronize at a later time. However, clients
531 MUST be prepared for calendar data on the server to change between
532 the time of last synchronization and when attempting an update, as
533 calendar collections may be shared and accessible via multiple
534 clients. Entity tags and other features make this possible.
536 <span class=
"h3"><h3><a name=
"section-3.2">3.2</a>. Recurrence and the Data Model
</h3></span>
538 Recurrence is an important part of the data model because it governs
539 how many resources are expected to exist. This specification models
540 a recurring calendar component and its recurrence exceptions as a
541 single resource. In this model, recurrence rules, recurrence dates,
542 exception rules, and exception dates are all part of the data in a
543 single calendar object resource. This model avoids problems of
544 limiting how many recurrence instances to store in the repository,
545 how to keep recurrence instances in sync with the recurring calendar
546 component, and how to link recurrence exceptions with the recurring
547 calendar component. It also results in less data to synchronize
548 between client and server, and makes it easier to make changes to all
549 recurrence instances or to a recurrence rule. It makes it easier to
550 create a recurring calendar component and to delete all recurrence
553 Clients are not forced to retrieve information about all recurrence
554 instances of a recurring component. The CALDAV:calendar-query and
555 CALDAV:calendar-multiget reports defined in this document allow
556 clients to retrieve only recurrence instances that overlap a given
566 <span class=
"grey">Daboo, et al. Standards Track [Page
8]
</span>
567 </pre><pre class=
"newpage"><a name=
"page-9" id=
"page-9" href=
"#page-9" class=
"invisible"> </a>
568 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
571 <span class=
"h2"><h2><a name=
"section-4">4</a>. Calendar Resources
</h2></span>
573 <span class=
"h3"><h3><a name=
"section-4.1">4.1</a>. Calendar Object Resources
</h3></span>
575 Calendar object resources contained in calendar collections MUST NOT
576 contain more than one type of calendar component (e.g., VEVENT,
577 VTODO, VJOURNAL, VFREEBUSY, etc.) with the exception of VTIMEZONE
578 components, which MUST be specified for each unique TZID parameter
579 value specified in the iCalendar object. For instance, a calendar
580 object resource can contain one VEVENT component and one VTIMEZONE
581 component, but it cannot contain one VEVENT component and one VTODO
582 component. Instead, the VEVENT and VTODO components would have to be
583 stored in separate calendar object resources in the same collection.
585 Calendar object resources contained in calendar collections MUST NOT
586 specify the iCalendar METHOD property.
588 The UID property value of the calendar components contained in a
589 calendar object resource MUST be unique in the scope of the calendar
590 collection in which they are stored.
592 Calendar components in a calendar collection that have different UID
593 property values MUST be stored in separate calendar object resources.
595 Calendar components with the same UID property value, in a given
596 calendar collection, MUST be contained in the same calendar object
597 resource. This ensures that all components in a recurrence
"set" are
598 contained in the same calendar object resource. It is possible for a
599 calendar object resource to just contain components that represent
600 "overridden" instances (ones that modify the behavior of a regular
601 instance, and thus include a RECURRENCE-ID property) without also
602 including the
"master" recurring component (the one that defines the
603 recurrence
"set" and does not contain any RECURRENCE-ID property).
622 <span class=
"grey">Daboo, et al. Standards Track [Page
9]
</span>
623 </pre><pre class=
"newpage"><a name=
"page-10" id=
"page-10" href=
"#page-10" class=
"invisible"> </a>
624 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
627 For example, given the following iCalendar object:
630 PRODID:-//Example Corp.//CalDAV Client//EN
634 SUMMARY:One-off Meeting
635 DTSTAMP:
20041210T183904Z
636 DTSTART:
20041207T120000Z
637 DTEND:
20041207T130000Z
641 SUMMARY:Weekly Meeting
642 DTSTAMP:
20041210T183838Z
643 DTSTART:
20041206T120000Z
644 DTEND:
20041206T130000Z
649 SUMMARY:Weekly Meeting
650 RECURRENCE-ID:
20041213T120000Z
651 DTSTAMP:
20041210T183838Z
652 DTSTART:
20041213T130000Z
653 DTEND:
20041213T140000Z
657 The VEVENT component with the UID value
"1@example.com" would be
658 stored in its own calendar object resource. The two VEVENT
659 components with the UID value
"2@example.com", which represent a
660 recurring event where one recurrence instance has been overridden,
661 would be stored in the same calendar object resource.
663 <span class=
"h3"><h3><a name=
"section-4.2">4.2</a>. Calendar Collection
</h3></span>
665 A calendar collection contains calendar object resources that
666 represent calendar components within a calendar. A calendar
667 collection is manifested to clients as a WebDAV resource collection
668 identified by a URL. A calendar collection MUST report the DAV:
669 collection and CALDAV:calendar XML elements in the value of the DAV:
670 resourcetype property. The element type declaration for CALDAV:
673 <!ELEMENT calendar EMPTY
>
678 <span class=
"grey">Daboo, et al. Standards Track [Page
10]
</span>
679 </pre><pre class=
"newpage"><a name=
"page-11" id=
"page-11" href=
"#page-11" class=
"invisible"> </a>
680 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
683 A calendar collection can be created through provisioning (i.e.,
684 automatically created when a user's account is provisioned), or it
685 can be created with the MKCALENDAR method (see
<a href=
"#section-5.3.1">Section
5.3.1</a>). This
686 method can be useful for a user to create additional calendars (e.g.,
687 soccer schedule) or for users to share a calendar (e.g., team events
688 or conference rooms). However, note that this document doesn't
689 define the purpose of extra calendar collections. Users must rely on
690 non-standard cues to find out what a calendar collection is for, or
691 use the CALDAV:calendar-description property defined in
<a href=
"#section-5.2.1">Section
5.2.1</a>
692 to provide such a cue.
694 The following restrictions are applied to the resources within a
697 a. Calendar collections MUST only contain calendar object resources
698 and collections that are not calendar collections, i.e., the only
699 "top-level" non-collection resources allowed in a calendar
700 collection are calendar object resources. This ensures that
701 calendar clients do not have to deal with non-calendar data in a
702 calendar collection, though they do have to distinguish between
703 calendar object resources and collections when using standard
704 WebDAV techniques to examine the contents of a collection.
706 b. Collections contained in calendar collections MUST NOT contain
707 calendar collections at any depth, i.e.,
"nesting" of calendar
708 collections within other calendar collections at any depth is not
709 allowed. This specification does not define how collections
710 contained in a calendar collection are used or how they relate to
711 any calendar object resources contained in the calendar
714 Multiple calendar collections MAY be children of the same collection.
716 <span class=
"h2"><h2><a name=
"section-5">5</a>. Calendar Access Feature
</h2></span>
718 <span class=
"h3"><h3><a name=
"section-5.1">5.1</a>. Calendar Access Support
</h3></span>
720 A server supporting the features described in this document MUST
721 include
"calendar-access" as a field in the DAV response header from
722 an OPTIONS request on any resource that supports any calendar
723 properties, reports, method, or privilege. A value of
"calendar-
724 access" in the DAV response header MUST indicate that the server
725 supports all MUST level requirements specified in this document.
734 <span class=
"grey">Daboo, et al. Standards Track [Page
11]
</span>
735 </pre><pre class=
"newpage"><a name=
"page-12" id=
"page-12" href=
"#page-12" class=
"invisible"> </a>
736 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
739 <span class=
"h4"><h4><a name=
"section-5.1.1">5.1.1</a>. Example: Using OPTIONS for the Discovery of Calendar Access
</h4></span>
742 >> Request
<<
744 OPTIONS /home/bernard/calendars/ HTTP/
1.1
745 Host: cal.example.com
747 >> Response
<<
750 Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE
751 Allow: PROPFIND, PROPPATCH, LOCK, UNLOCK, REPORT, ACL
752 DAV:
1,
2, access-control, calendar-access
753 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
756 In this example, the OPTIONS method returns the value
"calendar-
757 access" in the DAV response header to indicate that the collection
758 "/home/bernard/calendars/" supports the properties, reports, method,
759 or privilege defined in this specification.
761 <span class=
"h3"><h3><a name=
"section-5.2">5.2</a>. Calendar Collection Properties
</h3></span>
763 This section defines properties for calendar collections.
765 <span class=
"h4"><h4><a name=
"section-5.2.1">5.2.1</a>. CALDAV:calendar-description Property
</h4></span>
767 Name: calendar-description
769 Namespace: urn:ietf:params:xml:ns:caldav
771 Purpose: Provides a human-readable description of the calendar
774 Conformance: This property MAY be defined on any calendar
775 collection. If defined, it MAY be protected and SHOULD NOT be
776 returned by a PROPFIND DAV:allprop request (as defined in Section
777 12.14.1 of [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]). An xml:lang attribute indicating the human
778 language of the description SHOULD be set for this property by
779 clients or through server provisioning. Servers MUST return any
780 xml:lang attribute if set for the property.
782 Description: If present, the property contains a description of the
783 calendar collection that is suitable for presentation to a user.
784 If not present, the client should assume no description for the
790 <span class=
"grey">Daboo, et al. Standards Track [Page
12]
</span>
791 </pre><pre class=
"newpage"><a name=
"page-13" id=
"page-13" href=
"#page-13" class=
"invisible"> </a>
792 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
797 <!ELEMENT calendar-description (#PCDATA)
>
802 <C:calendar-description xml:
lang=
"fr-CA"
803 xmlns:
C=
"urn:ietf:params:xml:ns:caldav"
804 >Calendrier de Mathilde Desruisseaux
</C:calendar-description
>
806 <span class=
"h4"><h4><a name=
"section-5.2.2">5.2.2</a>. CALDAV:calendar-timezone Property
</h4></span>
808 Name: calendar-timezone
810 Namespace: urn:ietf:params:xml:ns:caldav
812 Purpose: Specifies a time zone on a calendar collection.
814 Conformance: This property SHOULD be defined on all calendar
815 collections. If defined, it SHOULD NOT be returned by a PROPFIND
816 DAV:allprop request (as defined in
<a href=
"http://tools.ietf.org/html/rfc2518#section-12.14.1">Section
12.14.1 of [RFC2518]
</a>).
818 Description: The CALDAV:calendar-timezone property is used to
819 specify the time zone the server should rely on to resolve
"date"
820 values and
"date with local time" values (i.e., floating time) to
821 "date with UTC time" values. The server will require this
822 information to determine if a calendar component scheduled with
823 "date" values or
"date with local time" values overlaps a CALDAV:
824 time-range specified in a CALDAV:calendar-query REPORT. The
825 server will also require this information to compute the proper
826 FREEBUSY time period as
"date with UTC time" in the VFREEBUSY
827 component returned in a response to a CALDAV:free-busy-query
828 REPORT request that takes into account calendar components
829 scheduled with
"date" values or
"date with local time" values. In
830 the absence of this property, the server MAY rely on the time zone
833 Note: The iCalendar data embedded within the CALDAV:calendar-
834 timezone XML element MUST follow the standard XML character data
835 encoding rules, including use of
&lt;,
&gt;,
&amp; etc. entity
836 encoding or the use of a
<![CDATA[ ... ]]
> construct. In the
837 later case, the iCalendar data cannot contain the character
838 sequence
"]]>", which is the end delimiter for the CDATA section.
846 <span class=
"grey">Daboo, et al. Standards Track [Page
13]
</span>
847 </pre><pre class=
"newpage"><a name=
"page-14" id=
"page-14" href=
"#page-14" class=
"invisible"> </a>
848 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
853 <!ELEMENT calendar-timezone (#PCDATA)
>
854 PCDATA value: an iCalendar object with exactly one VTIMEZONE
859 <C:calendar-timezone
860 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">BEGIN:VCALENDAR
861 PRODID:-//Example Corp.//CalDAV Client//EN
865 LAST-MODIFIED:
19870101T000000Z
867 DTSTART:
19671029T020000
868 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
871 TZNAME:Eastern Standard Time (US
&amp; Canada)
874 DTSTART:
19870405T020000
875 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
878 TZNAME:Eastern Daylight Time (US
&amp; Canada)
882 </C:calendar-timezone
>
884 <span class=
"h4"><h4><a name=
"section-5.2.3">5.2.3</a>. CALDAV:supported-calendar-component-set Property
</h4></span>
886 Name: supported-calendar-component-set
888 Namespace: urn:ietf:params:xml:ns:caldav
890 Purpose: Specifies the calendar component types (e.g., VEVENT,
891 VTODO, etc.) that calendar object resources can contain in the
894 Conformance: This property MAY be defined on any calendar
895 collection. If defined, it MUST be protected and SHOULD NOT be
896 returned by a PROPFIND DAV:allprop request (as defined in Section
897 12.14.1 of [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]).
902 <span class=
"grey">Daboo, et al. Standards Track [Page
14]
</span>
903 </pre><pre class=
"newpage"><a name=
"page-15" id=
"page-15" href=
"#page-15" class=
"invisible"> </a>
904 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
907 Description: The CALDAV:supported-calendar-component-set property is
908 used to specify restrictions on the calendar component types that
909 calendar object resources may contain in a calendar collection.
910 Any attempt by the client to store calendar object resources with
911 component types not listed in this property, if it exists, MUST
912 result in an error, with the CALDAV:supported-calendar-component
913 precondition (
<a href=
"#section-5.3.2.1">Section
5.3.2.1</a>) being violated. Since this
914 property is protected, it cannot be changed by clients using a
915 PROPPATCH request. However, clients can initialize the value of
916 this property when creating a new calendar collection with
917 MKCALENDAR. The empty-element tag
<C:comp
name=
"VTIMEZONE"/
> MUST
918 only be specified if support for calendar object resources that
919 only contain VTIMEZONE components is provided or desired. Support
920 for VTIMEZONE components in calendar object resources that contain
921 VEVENT or VTODO components is always assumed. In the absence of
922 this property, the server MUST accept all component types, and the
923 client can assume that all component types are accepted.
927 <!ELEMENT supported-calendar-component-set (comp+)
>
931 <C:supported-calendar-component-set
932 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
933 <C:comp
name=
"VEVENT"/
>
934 <C:comp
name=
"VTODO"/
>
935 </C:supported-calendar-component-set
>
937 <span class=
"h4"><h4><a name=
"section-5.2.4">5.2.4</a>. CALDAV:supported-calendar-data Property
</h4></span>
939 Name: supported-calendar-data
941 Namespace: urn:ietf:params:xml:ns:caldav
943 Purpose: Specifies what media types are allowed for calendar object
944 resources in a calendar collection.
946 Conformance: This property MAY be defined on any calendar
947 collection. If defined, it MUST be protected and SHOULD NOT be
948 returned by a PROPFIND DAV:allprop request (as defined in Section
949 12.14.1 of [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]).
951 Description: The CALDAV:supported-calendar-data property is used to
952 specify the media type supported for the calendar object resources
953 contained in a given calendar collection (e.g., iCalendar version
954 2.0). Any attempt by the client to store calendar object
958 <span class=
"grey">Daboo, et al. Standards Track [Page
15]
</span>
959 </pre><pre class=
"newpage"><a name=
"page-16" id=
"page-16" href=
"#page-16" class=
"invisible"> </a>
960 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
963 resources with a media type not listed in this property MUST
964 result in an error, with the CALDAV:supported-calendar-data
965 precondition (
<a href=
"#section-5.3.2.1">Section
5.3.2.1</a>) being violated. In the absence of
966 this property, the server MUST only accept data with the media
967 type
"text/calendar" and iCalendar version
2.0, and clients can
968 assume that the server will only accept this data.
972 <!ELEMENT supported-calendar-data (calendar-data+)
>
976 <C:supported-calendar-data
977 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
978 <C:calendar-data
content-type=
"text/calendar" version=
"2.0"/
>
979 </C:supported-calendar-data
>
981 <span class=
"h4"><h4><a name=
"section-5.2.5">5.2.5</a>. CALDAV:max-resource-size Property
</h4></span>
983 Name: max-resource-size
985 Namespace: urn:ietf:params:xml:ns:caldav
987 Purpose: Provides a numeric value indicating the maximum size of a
988 resource in octets that the server is willing to accept when a
989 calendar object resource is stored in a calendar collection.
991 Conformance: This property MAY be defined on any calendar
992 collection. If defined, it MUST be protected and SHOULD NOT be
993 returned by a PROPFIND DAV:allprop request (as defined in Section
994 12.14.1 of [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]).
996 Description: The CALDAV:max-resource-size is used to specify a
997 numeric value that represents the maximum size in octets that the
998 server is willing to accept when a calendar object resource is
999 stored in a calendar collection. Any attempt to store a calendar
1000 object resource exceeding this size MUST result in an error, with
1001 the CALDAV:max-resource-size precondition (
<a href=
"#section-5.3.2.1">Section
5.3.2.1</a>) being
1002 violated. In the absence of this property, the client can assume
1003 that the server will allow storing a resource of any reasonable
1008 <!ELEMENT max-resource-size (#PCDATA)
>
1009 PCDATA value: a numeric value (positive integer)
1014 <span class=
"grey">Daboo, et al. Standards Track [Page
16]
</span>
1015 </pre><pre class=
"newpage"><a name=
"page-17" id=
"page-17" href=
"#page-17" class=
"invisible"> </a>
1016 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1021 <C:max-resource-size xmlns:
C=
"urn:ietf:params:xml:ns:caldav"
1022 >102400</C:max-resource-size
>
1024 <span class=
"h4"><h4><a name=
"section-5.2.6">5.2.6</a>. CALDAV:min-date-time Property
</h4></span>
1028 Namespace: urn:ietf:params:xml:ns:caldav
1030 Purpose: Provides a DATE-TIME value indicating the earliest date and
1031 time (in UTC) that the server is willing to accept for any DATE or
1032 DATE-TIME value in a calendar object resource stored in a calendar
1035 Conformance: This property MAY be defined on any calendar
1036 collection. If defined, it MUST be protected and SHOULD NOT be
1037 returned by a PROPFIND DAV:allprop request (as defined in Section
1038 12.14.1 of [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]).
1040 Description: The CALDAV:min-date-time is used to specify an
1041 iCalendar DATE-TIME value in UTC that indicates the earliest
1042 inclusive date that the server is willing to accept for any
1043 explicit DATE or DATE-TIME value in a calendar object resource
1044 stored in a calendar collection. Any attempt to store a calendar
1045 object resource using a DATE or DATE-TIME value earlier than this
1046 value MUST result in an error, with the CALDAV:min-date-time
1047 precondition (
<a href=
"#section-5.3.2.1">Section
5.3.2.1</a>) being violated. Note that servers
1048 MUST accept recurring components that specify instances beyond
1049 this limit, provided none of those instances have been overridden.
1050 In that case, the server MAY simply ignore those instances outside
1051 of the acceptable range when processing reports on the calendar
1052 object resource. In the absence of this property, the client can
1053 assume any valid iCalendar date may be used at least up to the
1054 CALDAV:max-date-time value, if that is defined.
1058 <!ELEMENT min-date-time (#PCDATA)
>
1059 PCDATA value: an iCalendar format DATE-TIME value in UTC
1063 <C:min-date-time xmlns:
C=
"urn:ietf:params:xml:ns:caldav"
1064 >19000101T000000Z
</C:min-date-time
>
1070 <span class=
"grey">Daboo, et al. Standards Track [Page
17]
</span>
1071 </pre><pre class=
"newpage"><a name=
"page-18" id=
"page-18" href=
"#page-18" class=
"invisible"> </a>
1072 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1075 <span class=
"h4"><h4><a name=
"section-5.2.7">5.2.7</a>. CALDAV:max-date-time Property
</h4></span>
1079 Namespace: urn:ietf:params:xml:ns:caldav
1081 Purpose: Provides a DATE-TIME value indicating the latest date and
1082 time (in UTC) that the server is willing to accept for any DATE or
1083 DATE-TIME value in a calendar object resource stored in a calendar
1086 Conformance: This property MAY be defined on any calendar
1087 collection. If defined, it MUST be protected and SHOULD NOT be
1088 returned by a PROPFIND DAV:allprop request (as defined in Section
1089 12.14.1 of [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]).
1091 Description: The CALDAV:max-date-time is used to specify an
1092 iCalendar DATE-TIME value in UTC that indicates the inclusive
1093 latest date that the server is willing to accept for any date or
1094 time value in a calendar object resource stored in a calendar
1095 collection. Any attempt to store a calendar object resource using
1096 a DATE or DATE-TIME value later than this value MUST result in an
1097 error, with the CALDAV:max-date-time precondition
1098 (
<a href=
"#section-5.3.2.1">Section
5.3.2.1</a>) being violated. Note that servers MUST accept
1099 recurring components that specify instances beyond this limit,
1100 provided none of those instances have been overridden. In that
1101 case, the server MAY simply ignore those instances outside of the
1102 acceptable range when processing reports on the calendar object
1103 resource. In the absence of this property, the client can assume
1104 any valid iCalendar date may be used at least down to the CALDAV:
1105 min-date-time value, if that is defined.
1109 <!ELEMENT max-date-time (#PCDATA)
>
1110 PCDATA value: an iCalendar format DATE-TIME value in UTC
1114 <C:max-date-time xmlns:
C=
"urn:ietf:params:xml:ns:caldav"
1115 >20491231T235959Z
</C:max-date-time
>
1126 <span class=
"grey">Daboo, et al. Standards Track [Page
18]
</span>
1127 </pre><pre class=
"newpage"><a name=
"page-19" id=
"page-19" href=
"#page-19" class=
"invisible"> </a>
1128 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1131 <span class=
"h4"><h4><a name=
"section-5.2.8">5.2.8</a>. CALDAV:max-instances Property
</h4></span>
1135 Namespace: urn:ietf:params:xml:ns:caldav
1137 Purpose: Provides a numeric value indicating the maximum number of
1138 recurrence instances that a calendar object resource stored in a
1139 calendar collection can generate.
1141 Conformance: This property MAY be defined on any calendar
1142 collection. If defined, it MUST be protected and SHOULD NOT be
1143 returned by a PROPFIND DAV:allprop request (as defined in Section
1144 12.14.1 of [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]).
1146 Description: The CALDAV:max-instances is used to specify a numeric
1147 value that indicates the maximum number of recurrence instances
1148 that a calendar object resource stored in a calendar collection
1149 can generate. Any attempt to store a calendar object resource
1150 with a recurrence pattern that generates more instances than this
1151 value MUST result in an error, with the CALDAV:max-instances
1152 precondition (
<a href=
"#section-5.3.2.1">Section
5.3.2.1</a>) being violated. In the absence of
1153 this property, the client can assume that the server has no limits
1154 on the number of recurrence instances it can handle or expand.
1158 <!ELEMENT max-instances (#PCDATA)
>
1159 PCDATA value: a numeric value (integer greater than zero)
1163 <C:max-instances xmlns:
C=
"urn:ietf:params:xml:ns:caldav"
1164 >100</C:max-instances
>
1166 <span class=
"h4"><h4><a name=
"section-5.2.9">5.2.9</a>. CALDAV:max-attendees-per-instance Property
</h4></span>
1168 Name: max-attendees-per-instance
1170 Namespace: urn:ietf:params:xml:ns:caldav
1172 Purpose: Provides a numeric value indicating the maximum number of
1173 ATTENDEE properties in any instance of a calendar object resource
1174 stored in a calendar collection.
1176 Conformance: This property MAY be defined on any calendar
1177 collection. If defined, it MUST be protected and SHOULD NOT be
1182 <span class=
"grey">Daboo, et al. Standards Track [Page
19]
</span>
1183 </pre><pre class=
"newpage"><a name=
"page-20" id=
"page-20" href=
"#page-20" class=
"invisible"> </a>
1184 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1187 returned by a PROPFIND DAV:allprop request (as defined in Section
1188 12.14.1 of [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]).
1190 Description: The CALDAV:max-attendees-per-instance is used to
1191 specify a numeric value that indicates the maximum number of
1192 iCalendar ATTENDEE properties on any one instance of a calendar
1193 object resource stored in a calendar collection. Any attempt to
1194 store a calendar object resource with more ATTENDEE properties per
1195 instance than this value MUST result in an error, with the CALDAV:
1196 max-attendees-per-instance precondition (
<a href=
"#section-5.3.2.1">Section
5.3.2.1</a>) being
1197 violated. In the absence of this property, the client can assume
1198 that the server can handle any number of ATTENDEE properties in a
1203 <!ELEMENT max-attendees-per-instance (#PCDATA)
>
1204 PCDATA value: a numeric value (integer greater than zero)
1208 <C:max-attendees-per-instance
1209 xmlns:
C=
"urn:ietf:params:xml:ns:caldav"
1210 >25</C:max-attendees-per-instance
>
1212 <span class=
"h4"><h4><a name=
"section-5.2.10">5.2.10</a>. Additional Precondition for PROPPATCH
</h4></span>
1214 This specification requires an additional Precondition for the
1215 PROPPATCH method. The precondition is:
1217 (CALDAV:valid-calendar-data): The time zone specified in CALDAV:
1218 calendar-timezone property MUST be a valid iCalendar object
1219 containing a single valid VTIMEZONE component.
1221 <span class=
"h3"><h3><a name=
"section-5.3">5.3</a>. Creating Resources
</h3></span>
1223 Calendar collections and calendar object resources may be created by
1224 either a CalDAV client or by the CalDAV server. This specification
1225 defines restrictions and a data model that both clients and servers
1226 MUST adhere to when manipulating such calendar data.
1228 <span class=
"h4"><h4><a name=
"section-5.3.1">5.3.1</a>. MKCALENDAR Method
</h4></span>
1230 An HTTP request using the MKCALENDAR method creates a new calendar
1231 collection resource. A server MAY restrict calendar collection
1232 creation to particular collections.
1238 <span class=
"grey">Daboo, et al. Standards Track [Page
20]
</span>
1239 </pre><pre class=
"newpage"><a name=
"page-21" id=
"page-21" href=
"#page-21" class=
"invisible"> </a>
1240 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1243 Support for MKCALENDAR on the server is only RECOMMENDED and not
1244 REQUIRED because some calendar stores only support one calendar per
1245 user (or principal), and those are typically pre-created for each
1246 account. However, servers and clients are strongly encouraged to
1247 support MKCALENDAR whenever possible to allow users to create
1248 multiple calendar collections to help organize their data better.
1250 Clients SHOULD use the DAV:displayname property for a human-readable
1251 name of the calendar. Clients can either specify the value of the
1252 DAV:displayname property in the request body of the MKCALENDAR
1253 request, or alternatively issue a PROPPATCH request to change the
1254 DAV:displayname property to the appropriate value immediately after
1255 issuing the MKCALENDAR request. Clients SHOULD NOT set the DAV:
1256 displayname property to be the same as any other calendar collection
1257 at the same URI
"level". When displaying calendar collections to
1258 users, clients SHOULD check the DAV:displayname property and use that
1259 value as the name of the calendar. In the event that the DAV:
1260 displayname property is empty, the client MAY use the last part of
1261 the calendar collection URI as the name; however, that path segment
1262 may be
"opaque" and not represent any meaningful human-readable text.
1264 If a MKCALENDAR request fails, the server state preceding the request
1268 If a request body is included, it MUST be a CALDAV:mkcalendar XML
1269 element. Instruction processing MUST occur in the order
1270 instructions are received (i.e., from top to bottom).
1271 Instructions MUST either all be executed or none executed. Thus,
1272 if any error occurs during processing, all executed instructions
1273 MUST be undone and a proper error result returned. Instruction
1274 processing details can be found in the definition of the DAV:set
1275 instruction in
<a href=
"http://tools.ietf.org/html/rfc2518#section-12.13.2">Section
12.13.2 of [RFC2518]
</a>.
1277 <!ELEMENT mkcalendar (DAV:set)
>
1279 If a response body for a successful request is included, it MUST
1280 be a CALDAV:mkcalendar-response XML element.
1282 <!ELEMENT mkcalendar-response ANY
>
1284 The response MUST include a Cache-Control:no-cache header.
1288 (DAV:resource-must-be-null): A resource MUST NOT exist at the
1294 <span class=
"grey">Daboo, et al. Standards Track [Page
21]
</span>
1295 </pre><pre class=
"newpage"><a name=
"page-22" id=
"page-22" href=
"#page-22" class=
"invisible"> </a>
1296 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1299 (CALDAV:calendar-collection-location-ok): The Request-URI MUST
1300 identify a location where a calendar collection can be created;
1302 (CALDAV:valid-calendar-data): The time zone specified in the
1303 CALDAV:calendar-timezone property MUST be a valid iCalendar object
1304 containing a single valid VTIMEZONE component;
1306 (DAV:needs-privilege): The DAV:bind privilege MUST be granted to
1307 the current user on the parent collection of the Request-URI.
1311 (CALDAV:initialize-calendar-collection): A new calendar collection
1312 exists at the Request-URI. The DAV:resourcetype of the calendar
1313 collection MUST contain both DAV:collection and CALDAV:calendar
1316 <span class=
"h5"><h5><a name=
"section-5.3.1.1">5.3.1.1</a>. Status Codes
</h5></span>
1318 The following are examples of response codes one would expect to get
1319 in a response to a MKCALENDAR request. Note that this list is by no
1322 201 (Created) - The calendar collection resource was created in
1325 207 (Multi-Status) - The calendar collection resource was not
1326 created since one or more DAV:set instructions specified in the
1327 request body could not be processed successfully. The following
1328 are examples of response codes one would expect to be used in a
1329 207 (Multi-Status) response in this situation:
1331 403 (Forbidden) - The client, for reasons the server chooses
1332 not to specify, cannot alter one of the properties;
1334 409 (Conflict) - The client has provided a value whose
1335 semantics are not appropriate for the property. This includes
1336 trying to set read-only properties;
1338 424 (Failed Dependency) - The DAV:set instruction on the
1339 specified resource would have succeeded if it were not for the
1340 failure of another DAV:set instruction specified in the request
1343 423 (Locked) - The specified resource is locked and the client
1344 either is not a lock owner or the lock type requires a lock
1345 token to be submitted and the client did not submit it; and
1350 <span class=
"grey">Daboo, et al. Standards Track [Page
22]
</span>
1351 </pre><pre class=
"newpage"><a name=
"page-23" id=
"page-23" href=
"#page-23" class=
"invisible"> </a>
1352 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1355 507 (Insufficient Storage) - The server did not have sufficient
1356 space to record the property;
1358 403 (Forbidden) - This indicates at least one of two conditions:
1359 1) the server does not allow the creation of calendar collections
1360 at the given location in its namespace, or
2) the parent
1361 collection of the Request-URI exists but cannot accept members;
1363 409 (Conflict) - A collection cannot be made at the Request-URI
1364 until one or more intermediate collections have been created;
1366 415 (Unsupported Media Type) - The server does not support the
1367 request type of the body; and
1369 507 (Insufficient Storage) - The resource does not have sufficient
1370 space to record the state of the resource after the execution of
1373 <span class=
"h5"><h5><a name=
"section-5.3.1.2">5.3.1.2</a>. Example: Successful MKCALENDAR Request
</h5></span>
1375 This example creates a calendar collection called /home/lisa/
1376 calendars/events/ on the server cal.example.com with specific values
1377 for the properties DAV:displayname, CALDAV:calendar-description,
1378 CALDAV:supported-calendar-component-set, and CALDAV:calendar-
1406 <span class=
"grey">Daboo, et al. Standards Track [Page
23]
</span>
1407 </pre><pre class=
"newpage"><a name=
"page-24" id=
"page-24" href=
"#page-24" class=
"invisible"> </a>
1408 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1411 >> Request
<<
1413 MKCALENDAR /home/lisa/calendars/events/ HTTP/
1.1
1414 Host: cal.example.com
1415 Content-Type: application/xml;
charset=
"utf-8"
1416 Content-Length: xxxx
1418 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
1419 <C:mkcalendar xmlns:
D=
"DAV:"
1420 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
1423 <D:displayname
>Lisa's Events
</D:displayname
>
1424 <C:calendar-description xml:
lang=
"en"
1425 >Calendar restricted to events.
</C:calendar-description
>
1426 <C:supported-calendar-component-set
>
1427 <C:comp
name=
"VEVENT"/
>
1428 </C:supported-calendar-component-set
>
1429 <C:calendar-timezone
><![CDATA[BEGIN:VCALENDAR
1430 PRODID:-//Example Corp.//CalDAV Client//EN
1434 LAST-MODIFIED:
19870101T000000Z
1436 DTSTART:
19671029T020000
1437 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
1440 TZNAME:Eastern Standard Time (US
& Canada)
1443 DTSTART:
19870405T020000
1444 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
1447 TZNAME:Eastern Daylight Time (US
& Canada)
1451 ]]
></C:calendar-timezone
>
1454 </C:mkcalendar
>
1462 <span class=
"grey">Daboo, et al. Standards Track [Page
24]
</span>
1463 </pre><pre class=
"newpage"><a name=
"page-25" id=
"page-25" href=
"#page-25" class=
"invisible"> </a>
1464 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1467 >> Response
<<
1469 HTTP/
1.1 201 Created
1470 Cache-Control: no-cache
1471 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
1474 <span class=
"h4"><h4><a name=
"section-5.3.2">5.3.2</a>. Creating Calendar Object Resources
</h4></span>
1476 Clients populate calendar collections with calendar object resources.
1477 The URL for each calendar object resource is entirely arbitrary and
1478 does not need to bear a specific relationship to the calendar object
1479 resource's iCalendar properties or other metadata. New calendar
1480 object resources MUST be created with a PUT request targeted at an
1481 unmapped URI. A PUT request targeted at a mapped URI updates an
1482 existing calendar object resource.
1484 When servers create new resources, it's not hard for the server to
1485 choose an unmapped URI. It's slightly tougher for clients, because a
1486 client might not want to examine all resources in the collection and
1487 might not want to lock the entire collection to ensure that a new
1488 resource isn't created with a name collision. However, there is an
1489 HTTP feature to mitigate this. If the client intends to create a new
1490 non-collection resource, such as a new VEVENT, the client SHOULD use
1491 the HTTP request header
"If-None-Match: *" on the PUT request. The
1492 Request-URI on the PUT request MUST include the target collection,
1493 where the resource is to be created, plus the name of the resource in
1494 the last path segment. The
"If-None-Match: *" request header ensures
1495 that the client will not inadvertently overwrite an existing resource
1496 if the last path segment turned out to already be used.
1518 <span class=
"grey">Daboo, et al. Standards Track [Page
25]
</span>
1519 </pre><pre class=
"newpage"><a name=
"page-26" id=
"page-26" href=
"#page-26" class=
"invisible"> </a>
1520 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1523 >> Request
<<
1525 PUT /home/lisa/calendars/events/qwue23489.ics HTTP/
1.1
1527 Host: cal.example.com
1528 Content-Type: text/calendar
1529 Content-Length: xxxx
1533 PRODID:-//Example Corp.//CalDAV Client//EN
1535 UID:
20010712T182145Z-
123401@example.com
1536 DTSTAMP:
20060712T182145Z
1537 DTSTART:
20060714T170000Z
1538 DTEND:
20060715T040000Z
1539 SUMMARY:Bastille Day Party
1543 >> Response
<<
1545 HTTP/
1.1 201 Created
1547 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
1548 ETag:
"123456789-000-111"
1550 The request to change an existing event is the same, but with a
1551 specific ETag in the
"If-Match" header, rather than the
"If-None-
1554 As indicated in
<a href=
"http://tools.ietf.org/html/rfc2445#section-3.10">Section
3.10 of [RFC2445]
</a>, the URL of calendar object
1555 resources containing (an arbitrary set of) calendaring and scheduling
1556 information may be suffixed by
".ics", and the URL of calendar object
1557 resources containing free or busy time information may be suffixed by
1560 <span class=
"h5"><h5><a name=
"section-5.3.2.1">5.3.2.1</a>. Additional Preconditions for PUT, COPY, and MOVE
</h5></span>
1562 This specification creates additional Preconditions for PUT, COPY,
1563 and MOVE methods. These preconditions apply when a PUT operation of
1564 a calendar object resource into a calendar collection occurs, or when
1565 a COPY or MOVE operation of a calendar object resource into a
1566 calendar collection occurs, or when a COPY or MOVE operation occurs
1567 on a calendar collection.
1574 <span class=
"grey">Daboo, et al. Standards Track [Page
26]
</span>
1575 </pre><pre class=
"newpage"><a name=
"page-27" id=
"page-27" href=
"#page-27" class=
"invisible"> </a>
1576 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1579 The new preconditions are:
1581 (CALDAV:supported-calendar-data): The resource submitted in the
1582 PUT request, or targeted by a COPY or MOVE request, MUST be a
1583 supported media type (i.e., iCalendar) for calendar object
1586 (CALDAV:valid-calendar-data): The resource submitted in the PUT
1587 request, or targeted by a COPY or MOVE request, MUST be valid data
1588 for the media type being specified (i.e., MUST contain valid
1591 (CALDAV:valid-calendar-object-resource): The resource submitted in
1592 the PUT request, or targeted by a COPY or MOVE request, MUST obey
1593 all restrictions specified in
<a href=
"#section-4.1">Section
4.1</a> (e.g., calendar object
1594 resources MUST NOT contain more than one type of calendar
1595 component, calendar object resources MUST NOT specify the
1596 iCalendar METHOD property, etc.);
1598 (CALDAV:supported-calendar-component): The resource submitted in
1599 the PUT request, or targeted by a COPY or MOVE request, MUST
1600 contain a type of calendar component that is supported in the
1601 targeted calendar collection;
1603 (CALDAV:no-uid-conflict): The resource submitted in the PUT
1604 request, or targeted by a COPY or MOVE request, MUST NOT specify
1605 an iCalendar UID property value already in use in the targeted
1606 calendar collection or overwrite an existing calendar object
1607 resource with one that has a different UID property value.
1608 Servers SHOULD report the URL of the resource that is already
1609 making use of the same UID property value in the DAV:href element;
1611 <!ELEMENT no-uid-conflict (DAV:href)
>
1613 (CALDAV:calendar-collection-location-ok): In a COPY or MOVE
1614 request, when the Request-URI is a calendar collection, the
1615 Destination-URI MUST identify a location where a calendar
1616 collection can be created;
1618 (CALDAV:max-resource-size): The resource submitted in the PUT
1619 request, or targeted by a COPY or MOVE request, MUST have an octet
1620 size less than or equal to the value of the CALDAV:max-resource-
1621 size property value (
<a href=
"#section-5.2.5">Section
5.2.5</a>) on the calendar collection
1622 where the resource will be stored;
1624 (CALDAV:min-date-time): The resource submitted in the PUT request,
1625 or targeted by a COPY or MOVE request, MUST have all of its
1626 iCalendar DATE or DATE-TIME property values (for each recurring
1630 <span class=
"grey">Daboo, et al. Standards Track [Page
27]
</span>
1631 </pre><pre class=
"newpage"><a name=
"page-28" id=
"page-28" href=
"#page-28" class=
"invisible"> </a>
1632 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1635 instance) greater than or equal to the value of the CALDAV:min-
1636 date-time property value (
<a href=
"#section-5.2.6">Section
5.2.6</a>) on the calendar
1637 collection where the resource will be stored;
1639 (CALDAV:max-date-time): The resource submitted in the PUT request,
1640 or targeted by a COPY or MOVE request, MUST have all of its
1641 iCalendar DATE or DATE-TIME property values (for each recurring
1642 instance) less than the value of the CALDAV:max-date-time property
1643 value (
<a href=
"#section-5.2.7">Section
5.2.7</a>) on the calendar collection where the
1644 resource will be stored;
1646 (CALDAV:max-instances): The resource submitted in the PUT request,
1647 or targeted by a COPY or MOVE request, MUST generate a number of
1648 recurring instances less than or equal to the value of the CALDAV:
1649 max-instances property value (
<a href=
"#section-5.2.8">Section
5.2.8</a>) on the calendar
1650 collection where the resource will be stored;
1652 (CALDAV:max-attendees-per-instance): The resource submitted in the
1653 PUT request, or targeted by a COPY or MOVE request, MUST have a
1654 number of ATTENDEE properties on any one instance less than or
1655 equal to the value of the CALDAV:max-attendees-per-instance
1656 property value (
<a href=
"#section-5.2.9">Section
5.2.9</a>) on the calendar collection where
1657 the resource will be stored;
1659 <span class=
"h4"><h4><a name=
"section-5.3.3">5.3.3</a>. Non-Standard Components, Properties, and Parameters
</h4></span>
1661 iCalendar provides a
"standard mechanism for doing non-standard
1662 things". This extension support allows implementers to make use of
1663 non-standard components, properties, and parameters whose names are
1664 prefixed with the text
"X-".
1666 Servers MUST support the use of non-standard components, properties,
1667 and parameters in calendar object resources stored via the PUT
1670 Servers may need to enforce rules for their own
"private" components,
1671 properties, or parameters, so servers MAY reject any attempt by the
1672 client to change those or use values for those outside of any
1673 restrictions the server may have. Servers SHOULD ensure that any
1674 "private" components, properties, or parameters it uses follow the
1675 convention of including a vendor id in the
"X-" name, as described in
1676 <a href=
"http://tools.ietf.org/html/rfc2445#section-4.2">Section
4.2 of [RFC2445]
</a>, e.g.,
"X-ABC-PRIVATE".
1678 <span class=
"h4"><h4><a name=
"section-5.3.4">5.3.4</a>. Calendar Object Resource Entity Tag
</h4></span>
1680 The DAV:getetag property MUST be defined and set to a strong entity
1681 tag on all calendar object resources.
1686 <span class=
"grey">Daboo, et al. Standards Track [Page
28]
</span>
1687 </pre><pre class=
"newpage"><a name=
"page-29" id=
"page-29" href=
"#page-29" class=
"invisible"> </a>
1688 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1691 A response to a GET request targeted at a calendar object resource
1692 MUST contain an ETag response header field indicating the current
1693 value of the strong entity tag of the calendar object resource.
1695 Servers SHOULD return a strong entity tag (ETag header) in a PUT
1696 response when the stored calendar object resource is equivalent by
1697 octet equality to the calendar object resource submitted in the body
1698 of the PUT request. This allows clients to reliably use the returned
1699 strong entity tag for data synchronization purposes. For instance,
1700 the client can do a PROPFIND request on the stored calendar object
1701 resource and have the DAV:getetag property returned, and compare that
1702 value with the strong entity tag it received on the PUT response, and
1703 know that if they are equal, then the calendar object resource on the
1704 server has not been changed.
1706 In the case where the data stored by a server as a result of a PUT
1707 request is not equivalent by octet equality to the submitted calendar
1708 object resource, the behavior of the ETag response header is not
1709 specified here, with the exception that a strong entity tag MUST NOT
1710 be returned in the response. As a result, clients may need to
1711 retrieve the modified calendar object resource (and ETag) as a basis
1712 for further changes, rather than use the calendar object resource it
1713 had sent with the PUT request.
1715 <span class=
"h2"><h2><a name=
"section-6">6</a>. Calendaring Access Control
</h2></span>
1717 <span class=
"h3"><h3><a name=
"section-6.1">6.1</a>. Calendaring Privilege
</h3></span>
1719 CalDAV servers MUST support and adhere to the requirements of WebDAV
1720 ACL [
<a href=
"http://tools.ietf.org/html/rfc3744" title=
""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744
</a>]. WebDAV ACL provides a framework for an extensible set
1721 of privileges that can be applied to WebDAV collections and ordinary
1722 resources. CalDAV servers MUST also support the calendaring
1723 privilege defined in this section.
1725 <span class=
"h4"><h4><a name=
"section-6.1.1">6.1.1</a>. CALDAV:read-free-busy Privilege
</h4></span>
1727 Calendar users often wish to allow other users to see their busy time
1728 information, without viewing the other details of the calendar
1729 components (e.g., location, summary, attendees). This allows a
1730 significant amount of privacy while still allowing other users to
1731 schedule meetings at times when the user is likely to be free.
1733 The CALDAV:read-free-busy privilege controls which calendar
1734 collections, regular collections, and calendar object resources are
1735 examined when a CALDAV:free-busy-query REPORT request is processed
1736 (see
<a href=
"#section-7.10">Section
7.10</a>). This privilege can be granted on calendar
1737 collections, regular collections, or calendar object resources.
1742 <span class=
"grey">Daboo, et al. Standards Track [Page
29]
</span>
1743 </pre><pre class=
"newpage"><a name=
"page-30" id=
"page-30" href=
"#page-30" class=
"invisible"> </a>
1744 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1747 Servers MUST support this privilege on all calendar collections,
1748 regular collections, and calendar object resources.
1751 <!ELEMENT read-free-busy EMPTY
>
1753 The CALDAV:read-free-busy privilege MUST be aggregated in the DAV:
1754 read privilege. Servers MUST allow the CALDAV:read-free-busy to be
1755 granted without the DAV:read privilege being granted.
1757 Clients should note that when only the CALDAV:read-free-busy
1758 privilege has been granted on a resource, access to GET, HEAD,
1759 OPTIONS, and PROPFIND on the resource is not implied (those
1760 operations are governed by the DAV:read privilege).
1762 <span class=
"h3"><h3><a name=
"section-6.2">6.2</a>. Additional Principal Property
</h3></span>
1764 This section defines an additional property for WebDAV principal
1765 resources, as defined in [
<a href=
"http://tools.ietf.org/html/rfc3744" title=
""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744
</a>].
1767 <span class=
"h4"><h4><a name=
"section-6.2.1">6.2.1</a>. CALDAV:calendar-home-set Property
</h4></span>
1769 Name: calendar-home-set
1771 Namespace: urn:ietf:params:xml:ns:caldav
1773 Purpose: Identifies the URL of any WebDAV collections that contain
1774 calendar collections owned by the associated principal resource.
1776 Conformance: This property SHOULD be defined on a principal
1777 resource. If defined, it MAY be protected and SHOULD NOT be
1778 returned by a PROPFIND DAV:allprop request (as defined in Section
1779 12.14.1 of [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]).
1781 Description: The CALDAV:calendar-home-set property is meant to allow
1782 users to easily find the calendar collections owned by the
1783 principal. Typically, users will group all the calendar
1784 collections that they own under a common collection. This
1785 property specifies the URL of collections that are either calendar
1786 collections or ordinary collections that have child or descendant
1787 calendar collections owned by the principal.
1791 <!ELEMENT calendar-home-set (DAV:href*)
>
1798 <span class=
"grey">Daboo, et al. Standards Track [Page
30]
</span>
1799 </pre><pre class=
"newpage"><a name=
"page-31" id=
"page-31" href=
"#page-31" class=
"invisible"> </a>
1800 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1805 <C:calendar-home-set xmlns:
D=
"DAV:"
1806 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
1807 <D:href
>http://cal.example.com/home/bernard/calendars/
</D:href
>
1808 </C:calendar-home-set
>
1810 <span class=
"h2"><h2><a name=
"section-7">7</a>. Calendaring Reports
</h2></span>
1812 This section defines the reports that CalDAV servers MUST support on
1813 calendar collections and calendar object resources.
1815 CalDAV servers MUST advertise support for these reports on all
1816 calendar collections and calendar object resources with the DAV:
1817 supported-report-set property, defined in
<a href=
"http://tools.ietf.org/html/rfc3253#section-3.1.5">Section
3.1.5 of [RFC3253]
</a>.
1818 CalDAV servers MAY also advertise support for these reports on
1819 ordinary collections.
1821 Some of these reports allow calendar data (from possibly multiple
1822 resources) to be returned.
1824 <span class=
"h3"><h3><a name=
"section-7.1">7.1</a>. REPORT Method
</h3></span>
1826 The REPORT method (defined in
<a href=
"http://tools.ietf.org/html/rfc3253#section-3.6">Section
3.6 of [RFC3253]
</a>) provides an
1827 extensible mechanism for obtaining information about one or more
1828 resources. Unlike the PROPFIND method, which returns the value of
1829 one or more named properties, the REPORT method can involve more
1830 complex processing. REPORT is valuable in cases where the server has
1831 access to all of the information needed to perform the complex
1832 request (such as a query), and where it would require multiple
1833 requests for the client to retrieve the information needed to perform
1836 CalDAV servers MUST support the DAV:expand-property REPORT defined in
1837 <a href=
"http://tools.ietf.org/html/rfc3253#section-3.8">Section
3.8 of [RFC3253]
</a>.
1839 <span class=
"h3"><h3><a name=
"section-7.2">7.2</a>. Ordinary Collections
</h3></span>
1841 Servers MAY support the reports defined in this document on ordinary
1842 collections (collections that are not calendar collections), in
1843 addition to calendar collections or calendar object resources. In
1844 computing responses to the reports on ordinary collections, servers
1845 MUST only consider calendar object resources contained in calendar
1846 collections that are targeted by the REPORT request, based on the
1847 value of the Depth request header.
1854 <span class=
"grey">Daboo, et al. Standards Track [Page
31]
</span>
1855 </pre><pre class=
"newpage"><a name=
"page-32" id=
"page-32" href=
"#page-32" class=
"invisible"> </a>
1856 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1859 <span class=
"h3"><h3><a name=
"section-7.3">7.3</a>. Date and Floating Time
</h3></span>
1861 iCalendar provides a way to specify DATE and DATE-TIME values that
1862 are not bound to any time zone in particular, hereafter called
1863 "floating date" and
"floating time", respectively. These values are
1864 used to represent the same day, hour, minute, and second value,
1865 regardless of which time zone is being observed. For instance, the
1866 DATE value
"20051111", represents November
11,
2005 in no specific
1867 time zone, while the DATE-TIME value
"20051111T111100" represents
1868 November
11,
2005, at
11:
11 A.M. in no specific time zone.
1870 CalDAV servers may need to convert
"floating date" and
"floating
1871 time" values in date with UTC time values in the processing of
1872 calendaring REPORT requests.
1874 For the CALDAV:calendar-query REPORT, CalDAV servers MUST rely on the
1875 value of the CALDAV:timezone XML element, if specified as part of the
1876 request body, to perform the proper conversion of
"floating date" and
1877 "floating time" values to date with UTC time values. If the CALDAV:
1878 timezone XML element is not specified in the request body, CalDAV
1879 servers MUST rely on the value of the CALDAV:calendar-timezone
1880 property, if defined, or else the CalDAV servers MAY rely on the time
1881 zone of their choice.
1883 For the CALDAV:free-busy-query REPORT, CalDAV servers MUST rely on
1884 the value of the CALDAV:calendar-timezone property, if defined, to
1885 compute the proper FREEBUSY time period value as date with UTC time
1886 for calendar components scheduled with
"floating date" or
"floating
1887 time". If the CALDAV:calendar-timezone property is not defined,
1888 CalDAV servers MAY rely on the time zone of their choice.
1890 <span class=
"h3"><h3><a name=
"section-7.4">7.4</a>. Time Range Filtering
</h3></span>
1892 Some of the reports defined in this section can include a time range
1893 filter that is used to restrict the set of calendar object resources
1894 returned to just those that overlap the specified time range. The
1895 time range filter can be applied to a calendar component as a whole,
1896 or to specific calendar component properties with DATE or DATE-TIME
1899 To determine whether a calendar object resource matches the time
1900 range filter element, the start and end times for the targeted
1901 component or property are determined and then compared to the
1902 requested time range. If there is an overlap with the requested time
1903 range, then the calendar object resource matches the filter element.
1904 The rules defined in [
<a href=
"http://tools.ietf.org/html/rfc2445" title=
""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445
</a>] for determining the actual start and
1905 end times of calendar components MUST be used, and these are fully
1906 enumerated in
<a href=
"#section-9.9">Section
9.9</a> of this document.
1910 <span class=
"grey">Daboo, et al. Standards Track [Page
32]
</span>
1911 </pre><pre class=
"newpage"><a name=
"page-33" id=
"page-33" href=
"#page-33" class=
"invisible"> </a>
1912 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1915 When such time range filtering is used, special consideration must be
1916 given to recurring calendar components, such as VEVENT and VTODO.
1917 The server MUST expand recurring components to determine whether any
1918 recurrence instances overlap the specified time range. If one or
1919 more recurrence instances overlap the time range, then the calendar
1920 object resource matches the filter element.
1922 <span class=
"h3"><h3><a name=
"section-7.5">7.5</a>. Searching Text: Collations
</h3></span>
1924 Some of the reports defined in this section do text matches of
1925 character strings provided by the client and are compared to stored
1926 calendar data. Since iCalendar data is, by default, encoded in the
1927 UTF-
8 charset and may include characters outside the US-ASCII charset
1928 range in some property and parameter values, there is a need to
1929 ensure that text matching follows well-defined rules.
1931 To deal with this, this specification makes use of the IANA Collation
1932 Registry defined in [
<a href=
"http://tools.ietf.org/html/rfc4790" title=
""Internet Application Protocol Collation Registry"">RFC4790
</a>] to specify collations that may be used
1933 to carry out the text comparison operations with a well-defined rule.
1935 The comparisons used in CalDAV are all
"substring" matches, as per
1936 <a href=
"http://tools.ietf.org/html/rfc4790#section-4.2">[RFC4790], Section
4.2</a>. Collations supported by the server MUST
1937 support
"substring" match operations.
1939 CalDAV servers are REQUIRED to support the
"i;ascii-casemap" and
1940 "i;octet" collations, as described in [
<a href=
"http://tools.ietf.org/html/rfc4790" title=
""Internet Application Protocol Collation Registry"">RFC4790
</a>], and MAY support
1943 Servers MUST advertise the set of collations that they support via
1944 the CALDAV:supported-collation-set property defined on any resource
1945 that supports reports that use collations.
1947 Clients MUST only use collations from the list advertised by the
1950 In the absence of a collation explicitly specified by the client, or
1951 if the client specifies the
"default" collation identifier (as
1952 defined in
<a href=
"http://tools.ietf.org/html/rfc4790#section-3.1">[RFC4790], Section
3.1</a>), the server MUST default to using
1953 "i;ascii-casemap" as the collation.
1955 Wildcards (as defined in
<a href=
"http://tools.ietf.org/html/rfc4790#section-3.2">[RFC4790], Section
3.2</a>) MUST NOT be used in
1956 the collation identifier.
1958 If the client chooses a collation not supported by the server, the
1959 server MUST respond with a CALDAV:supported-collation precondition
1966 <span class=
"grey">Daboo, et al. Standards Track [Page
33]
</span>
1967 </pre><pre class=
"newpage"><a name=
"page-34" id=
"page-34" href=
"#page-34" class=
"invisible"> </a>
1968 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
1971 <span class=
"h4"><h4><a name=
"section-7.5.1">7.5.1</a>. CALDAV:supported-collation-set Property
</h4></span>
1973 Name: supported-collation-set
1975 Namespace: urn:ietf:params:xml:ns:caldav
1977 Purpose: Identifies the set of collations supported by the server
1978 for text matching operations.
1980 Conformance: This property MUST be defined on any resource that
1981 supports a report that does text matching. If defined, it MUST be
1982 protected and SHOULD NOT be returned by a PROPFIND DAV:allprop
1983 request (as defined in
<a href=
"http://tools.ietf.org/html/rfc2518#section-12.14.1">Section
12.14.1 of [RFC2518]
</a>).
1985 Description: The CALDAV:supported-collation-set property contains
1986 zero or more CALDAV:supported-collation elements, which specify
1987 the collection identifiers of the collations supported by the
1992 <!ELEMENT supported-collation-set (supported-collation*)
>
1994 <!ELEMENT supported-collation (#PCDATA)
>
1998 <C:supported-collation-set
1999 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2000 <C:supported-collation
>i;ascii-casemap
</C:supported-collation
>
2001 <C:supported-collation
>i;octet
</C:supported-collation
>
2002 </C:supported-collation-set
>
2004 <span class=
"h3"><h3><a name=
"section-7.6">7.6</a>. Partial Retrieval
</h3></span>
2006 Some calendaring reports defined in this document allow partial
2007 retrieval of calendar object resources. A CalDAV client can specify
2008 what information to return in the body of a calendaring REPORT
2011 A CalDAV client can request particular WebDAV property values, all
2012 WebDAV property values, or a list of the names of the resource's
2013 WebDAV properties. A CalDAV client can also request calendar data to
2014 be returned and specify whether all calendar components and
2015 properties should be returned, or only particular ones. See CALDAV:
2016 calendar-data in
<a href=
"#section-9.6">Section
9.6</a>.
2022 <span class=
"grey">Daboo, et al. Standards Track [Page
34]
</span>
2023 </pre><pre class=
"newpage"><a name=
"page-35" id=
"page-35" href=
"#page-35" class=
"invisible"> </a>
2024 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2027 By default, the returned calendar data will include the component
2028 that defines the recurrence set, referred to as the
"master
2029 component", as well as the components that define exceptions to the
2030 recurrence set, referred to as the
"overridden components".
2032 A CalDAV client that is only interested in the recurrence instances
2033 that overlap a specified time range can request to receive only the
2034 "master component", along with the
"overridden components" that
2035 impact the specified time range, and thus, limit the data returned by
2036 the server (see CALDAV:limit-recurrence-set in
<a href=
"#section-9.6.6">Section
9.6.6</a>). An
2037 overridden component impacts a time range if its current start and
2038 end times overlap the time range, or if the original start and end
2039 times -- the ones that would have been used if the instance were not
2040 overridden -- overlap the time range, or if it affects other
2041 instances that overlap the time range.
2043 A CalDAV client with no support for recurrence properties (i.e.,
2044 EXDATE, EXRULE, RDATE, and RRULE) and possibly VTIMEZONE components,
2045 or a client unwilling to perform recurrence expansion because of
2046 limited processing capability, can request to receive only the
2047 recurrence instances that overlap a specified time range as separate
2048 calendar components that each define exactly one recurrence instance
2049 (see CALDAV:expand in
<a href=
"#section-9.6.5">Section
9.6.5</a>.)
2051 Finally, in the case of VFREEBUSY components, a CalDAV client can
2052 request to receive only the FREEBUSY property values that overlap a
2053 specified time range (see CALDAV:limit-freebusy-set in
2054 <a href=
"#section-9.6.7">Section
9.6.7</a>.)
2056 <span class=
"h3"><h3><a name=
"section-7.7">7.7</a>. Non-Standard Components, Properties, and Parameters
</h3></span>
2058 Servers MUST support the use of non-standard component, property, or
2059 parameter names in the CALDAV:calendar-data XML element in
2060 calendaring REPORT requests to allow clients to request that non-
2061 standard components, properties, and parameters be returned in the
2062 calendar data provided in the response.
2064 Servers MAY support the use of non-standard component, property, or
2065 parameter names in the CALDAV:comp-filter, CALDAV:prop-filter, and
2066 CALDAV:param-filter XML elements specified in the CALDAV:filter XML
2067 element of calendaring REPORT requests.
2069 Servers MUST fail with the CALDAV:supported-filter precondition if a
2070 calendaring REPORT request uses a CALDAV:comp-filter, CALDAV:prop-
2071 filter, or CALDAV:param-filter XML element that makes reference to a
2072 non-standard component, property, or parameter name on which the
2073 server does not support queries.
2078 <span class=
"grey">Daboo, et al. Standards Track [Page
35]
</span>
2079 </pre><pre class=
"newpage"><a name=
"page-36" id=
"page-36" href=
"#page-36" class=
"invisible"> </a>
2080 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2083 <span class=
"h3"><h3><a name=
"section-7.8">7.8</a>. CALDAV:calendar-query REPORT
</h3></span>
2085 The CALDAV:calendar-query REPORT performs a search for all calendar
2086 object resources that match a specified filter. The response of this
2087 report will contain all the WebDAV properties and calendar object
2088 resource data specified in the request. In the case of the CALDAV:
2089 calendar-data XML element, one can explicitly specify the calendar
2090 components and properties that should be returned in the calendar
2091 object resource data that matches the filter.
2093 The format of this report is modeled on the PROPFIND method. The
2094 request and response bodies of the CALDAV:calendar-query REPORT use
2095 XML elements that are also used by PROPFIND. In particular, the
2096 request can include XML elements to request WebDAV properties to be
2097 returned. When that occurs, the response should follow the same
2098 behavior as PROPFIND with respect to the DAV:multistatus response
2099 elements used to return specific property results. For instance, a
2100 request to retrieve the value of a property that does not exist is an
2101 error and MUST be noted with a response XML element that contains a
2102 404 (Not Found) status value.
2104 Support for the CALDAV:calendar-query REPORT is REQUIRED.
2108 The request body MUST be a CALDAV:calendar-query XML element, as
2109 defined in
<a href=
"#section-9.5">Section
9.5</a>.
2111 The request MAY include a Depth header. If no Depth header is
2112 included, Depth:
0 is assumed.
2114 The response body for a successful request MUST be a DAV:
2115 multistatus XML element (i.e., the response uses the same format
2116 as the response for PROPFIND). In the case where there are no
2117 response elements, the returned DAV:multistatus XML element is
2120 The response body for a successful CALDAV:calendar-query REPORT
2121 request MUST contain a DAV:response element for each iCalendar
2122 object that matched the search filter. Calendar data is being
2123 returned in the CALDAV:calendar-data XML element inside the DAV:
2124 propstat XML element.
2128 (CALDAV:supported-calendar-data): The attributes
"content-type"
2129 and
"version" of the CALDAV:calendar-data XML element (see
2134 <span class=
"grey">Daboo, et al. Standards Track [Page
36]
</span>
2135 </pre><pre class=
"newpage"><a name=
"page-37" id=
"page-37" href=
"#page-37" class=
"invisible"> </a>
2136 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2139 <a href=
"#section-9.6">Section
9.6</a>) specify a media type supported by the server for
2140 calendar object resources.
2142 (CALDAV:valid-filter): The CALDAV:filter XML element (see
2143 <a href=
"#section-9.7">Section
9.7</a>) specified in the REPORT request MUST be valid. For
2144 instance, a CALDAV:filter cannot nest a
<C:comp
name=
"VEVENT">
2145 element in a
<C:comp
name=
"VTODO"> element, and a CALDAV:filter
2146 cannot nest a
<C:time-range
start=
"..." end=
"..."> element in a
2147 <C:prop
name=
"SUMMARY"> element.
2149 (CALDAV:supported-filter): The CALDAV:comp-filter (see
2150 <a href=
"#section-9.7.1">Section
9.7.1</a>), CALDAV:prop-filter (see
<a href=
"#section-9.7.2">Section
9.7.2</a>), and
2151 CALDAV:param-filter (see
<a href=
"#section-9.7.3">Section
9.7.3</a>) XML elements used in the
2152 CALDAV:filter XML element (see
<a href=
"#section-9.7">Section
9.7</a>) in the REPORT request
2153 only make reference to components, properties, and parameters for
2154 which queries are supported by the server, i.e., if the CALDAV:
2155 filter element attempts to reference an unsupported component,
2156 property, or parameter, this precondition is violated. Servers
2157 SHOULD report the CALDAV:comp-filter, CALDAV:prop-filter, or
2158 CALDAV:param-filter for which it does not provide support.
2160 <!ELEMENT supported-filter (comp-filter*,
2164 (CALDAV:valid-calendar-data): The time zone specified in the
2165 REPORT request MUST be a valid iCalendar object containing a
2166 single valid VTIMEZONE component.
2168 (CALDAV:min-date-time): Any XML element specifying a range of time
2169 MUST have its start or end DATE or DATE-TIME values greater than
2170 or equal to the value of the CALDAV:min-date-time property value
2171 (
<a href=
"#section-5.2.6">Section
5.2.6</a>) on the calendar collections being targeted by the
2174 (CALDAV:max-date-time): Any XML element specifying a range of time
2175 MUST have its start or end DATE or DATE-TIME values less than or
2176 equal to the value of the CALDAV:max-date-time property value
2177 (
<a href=
"#section-5.2.7">Section
5.2.7</a>) on the calendar collections being targeted by the
2180 (CALDAV:supported-collation): Any XML attribute specifying a
2181 collation MUST specify a collation supported by the server as
2182 described in
<a href=
"#section-7.5">Section
7.5</a>.
2190 <span class=
"grey">Daboo, et al. Standards Track [Page
37]
</span>
2191 </pre><pre class=
"newpage"><a name=
"page-38" id=
"page-38" href=
"#page-38" class=
"invisible"> </a>
2192 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2197 (DAV:number-of-matches-within-limits): The number of matching
2198 calendar object resources must fall within server-specific,
2199 predefined limits. For example, this condition might be triggered
2200 if a search specification would cause the return of an extremely
2201 large number of responses.
2203 <span class=
"h4"><h4><a name=
"section-7.8.1">7.8.1</a>. Example: Partial Retrieval of Events by Time Range
</h4></span>
2205 In this example, the client requests the server to return specific
2206 components and properties of the VEVENT components that overlap the
2207 time range from January
4,
2006, at
00:
00:
00 A.M. UTC to January
5,
2208 2006, at
00:
00:
00 A.M. UTC. In addition, the DAV:getetag property is
2209 also requested and returned as part of the response. Note that the
2210 first calendar object returned is a recurring event whose first
2211 instance lies outside the requested time range, but whose third
2212 instance does overlap the time range. Note that due to the CALDAV:
2213 calendar-data element restrictions, the DTSTAMP property in VEVENT
2214 components has not been returned, and the only property returned in
2215 the VCALENDAR object is VERSION.
2217 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
2246 <span class=
"grey">Daboo, et al. Standards Track [Page
38]
</span>
2247 </pre><pre class=
"newpage"><a name=
"page-39" id=
"page-39" href=
"#page-39" class=
"invisible"> </a>
2248 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2251 >> Request
<<
2253 REPORT /bernard/work/ HTTP/
1.1
2254 Host: cal.example.com
2256 Content-Type: application/xml;
charset=
"utf-8"
2257 Content-Length: xxxx
2259 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2260 <C:calendar-query xmlns:
D=
"DAV:"
2261 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2264 <C:calendar-data
>
2265 <C:comp
name=
"VCALENDAR">
2266 <C:prop
name=
"VERSION"/
>
2267 <C:comp
name=
"VEVENT">
2268 <C:prop
name=
"SUMMARY"/
>
2269 <C:prop
name=
"UID"/
>
2270 <C:prop
name=
"DTSTART"/
>
2271 <C:prop
name=
"DTEND"/
>
2272 <C:prop
name=
"DURATION"/
>
2273 <C:prop
name=
"RRULE"/
>
2274 <C:prop
name=
"RDATE"/
>
2275 <C:prop
name=
"EXRULE"/
>
2276 <C:prop
name=
"EXDATE"/
>
2277 <C:prop
name=
"RECURRENCE-ID"/
>
2279 <C:comp
name=
"VTIMEZONE"/
>
2281 </C:calendar-data
>
2284 <C:comp-filter
name=
"VCALENDAR">
2285 <C:comp-filter
name=
"VEVENT">
2286 <C:time-range
start=
"20060104T000000Z"
2287 end=
"20060105T000000Z"/
>
2288 </C:comp-filter
>
2289 </C:comp-filter
>
2291 </C:calendar-query
>
2293 >> Response
<<
2295 HTTP/
1.1 207 Multi-Status
2296 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
2297 Content-Type: application/xml;
charset=
"utf-8"
2298 Content-Length: xxxx
2302 <span class=
"grey">Daboo, et al. Standards Track [Page
39]
</span>
2303 </pre><pre class=
"newpage"><a name=
"page-40" id=
"page-40" href=
"#page-40" class=
"invisible"> </a>
2304 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2307 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2308 <D:multistatus xmlns:
D=
"DAV:"
2309 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2311 <D:href
>http://cal.example.com/bernard/work/abcd2.ics
</D:href
>
2314 <D:getetag
>"fffff-abcd2"</D:getetag
>
2315 <C:calendar-data
>BEGIN:VCALENDAR
2318 LAST-MODIFIED:
20040110T032845Z
2321 DTSTART:
20000404T020000
2322 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
2328 DTSTART:
20001026T020000
2329 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
2336 DTSTART;TZID=US/Eastern:
20060102T120000
2338 RRULE:FREQ=DAILY;COUNT=
5
2340 UID:
00959BC664CA650E933C892C@example.com
2343 DTSTART;TZID=US/Eastern:
20060104T140000
2345 RECURRENCE-ID;TZID=US/Eastern:
20060104T120000
2346 SUMMARY:Event #
2 bis
2347 UID:
00959BC664CA650E933C892C@example.com
2350 DTSTART;TZID=US/Eastern:
20060106T140000
2352 RECURRENCE-ID;TZID=US/Eastern:
20060106T120000
2353 SUMMARY:Event #
2 bis bis
2354 UID:
00959BC664CA650E933C892C@example.com
2358 <span class=
"grey">Daboo, et al. Standards Track [Page
40]
</span>
2359 </pre><pre class=
"newpage"><a name=
"page-41" id=
"page-41" href=
"#page-41" class=
"invisible"> </a>
2360 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2365 </C:calendar-data
>
2367 <D:status
>HTTP/
1.1 200 OK
</D:status
>
2371 <D:href
>http://cal.example.com/bernard/work/abcd3.ics
</D:href
>
2374 <D:getetag
>"fffff-abcd3"</D:getetag
>
2375 <C:calendar-data
>BEGIN:VCALENDAR
2377 PRODID:-//Example Corp.//CalDAV Client//EN
2379 LAST-MODIFIED:
20040110T032845Z
2382 DTSTART:
20000404T020000
2383 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
2389 DTSTART:
20001026T020000
2390 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
2397 DTSTART;TZID=US/Eastern:
20060104T100000
2400 UID:DC6C50A017428C5216A2F1CD@example.com
2403 </C:calendar-data
>
2405 <D:status
>HTTP/
1.1 200 OK
</D:status
>
2408 </D:multistatus
>
2414 <span class=
"grey">Daboo, et al. Standards Track [Page
41]
</span>
2415 </pre><pre class=
"newpage"><a name=
"page-42" id=
"page-42" href=
"#page-42" class=
"invisible"> </a>
2416 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2419 <span class=
"h4"><h4><a name=
"section-7.8.2">7.8.2</a>. Example: Partial Retrieval of Recurring Events
</h4></span>
2421 In this example, the client requests the server to return VEVENT
2422 components that overlap the time range from January
3,
2006, at
00:
2423 00:
00 A.M. UTC to January
5,
2006, at
00:
00:
00 A.M. UTC. Use of the
2424 CALDAV:limit-recurrence-set element causes the server to only return
2425 overridden recurrence components that overlap the time range
2426 specified in that element or that affect other instances that overlap
2427 the time range (e.g., in the case of a THISANDFUTURE behavior). In
2428 this example, the first overridden component in the matching resource
2429 is returned, but the second one is not.
2431 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
2433 >> Request
<<
2435 REPORT /bernard/work/ HTTP/
1.1
2436 Host: cal.example.com
2438 Content-Type: application/xml;
charset=
"utf-8"
2439 Content-Length: xxxx
2441 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2442 <C:calendar-query xmlns:
D=
"DAV:"
2443 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2445 <C:calendar-data
>
2446 <C:limit-recurrence-set
start=
"20060103T000000Z"
2447 end=
"20060105T000000Z"/
>
2448 </C:calendar-data
>
2451 <C:comp-filter
name=
"VCALENDAR">
2452 <C:comp-filter
name=
"VEVENT">
2453 <C:time-range
start=
"20060103T000000Z"
2454 end=
"20060105T000000Z"/
>
2455 </C:comp-filter
>
2456 </C:comp-filter
>
2458 </C:calendar-query
>
2460 >> Response
<<
2462 HTTP/
1.1 207 Multi-Status
2463 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
2464 Content-Type: application/xml;
charset=
"utf-8"
2465 Content-Length: xxxx
2470 <span class=
"grey">Daboo, et al. Standards Track [Page
42]
</span>
2471 </pre><pre class=
"newpage"><a name=
"page-43" id=
"page-43" href=
"#page-43" class=
"invisible"> </a>
2472 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2475 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2476 <D:multistatus xmlns:
D=
"DAV:"
2477 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2479 <D:href
>http://cal.example.com/bernard/work/abcd2.ics
</D:href
>
2482 <D:getetag
>"fffff-abcd2"</D:getetag
>
2483 <C:calendar-data
>BEGIN:VCALENDAR
2485 PRODID:-//Example Corp.//CalDAV Client//EN
2487 LAST-MODIFIED:
20040110T032845Z
2490 DTSTART:
20000404T020000
2491 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
2497 DTSTART:
20001026T020000
2498 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
2505 DTSTAMP:
20060206T001121Z
2506 DTSTART;TZID=US/Eastern:
20060102T120000
2508 RRULE:FREQ=DAILY;COUNT=
5
2510 UID:
00959BC664CA650E933C892C@example.com
2513 DTSTAMP:
20060206T001121Z
2514 DTSTART;TZID=US/Eastern:
20060104T140000
2516 RECURRENCE-ID;TZID=US/Eastern:
20060104T120000
2517 SUMMARY:Event #
2 bis
2518 UID:
00959BC664CA650E933C892C@example.com
2521 </C:calendar-data
>
2526 <span class=
"grey">Daboo, et al. Standards Track [Page
43]
</span>
2527 </pre><pre class=
"newpage"><a name=
"page-44" id=
"page-44" href=
"#page-44" class=
"invisible"> </a>
2528 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2531 <D:status
>HTTP/
1.1 200 OK
</D:status
>
2535 <D:href
>http://cal.example.com/bernard/work/abcd3.ics
</D:href
>
2538 <D:getetag
>"fffff-abcd3"</D:getetag
>
2539 <C:calendar-data
>BEGIN:VCALENDAR
2541 PRODID:-//Example Corp.//CalDAV Client//EN
2543 LAST-MODIFIED:
20040110T032845Z
2546 DTSTART:
20000404T020000
2547 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
2553 DTSTART:
20001026T020000
2554 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
2561 ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com
2562 ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com
2563 DTSTAMP:
20060206T001220Z
2564 DTSTART;TZID=US/Eastern:
20060104T100000
2566 LAST-MODIFIED:
20060206T001330Z
2567 ORGANIZER:mailto:cyrus@example.com
2571 UID:DC6C50A017428C5216A2F1CD@example.com
2572 X-ABC-GUID:E1CX5Dr-
0007ym-Hz@example.com
2575 </C:calendar-data
>
2577 <D:status
>HTTP/
1.1 200 OK
</D:status
>
2582 <span class=
"grey">Daboo, et al. Standards Track [Page
44]
</span>
2583 </pre><pre class=
"newpage"><a name=
"page-45" id=
"page-45" href=
"#page-45" class=
"invisible"> </a>
2584 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2588 </D:multistatus
>
2590 <span class=
"h4"><h4><a name=
"section-7.8.3">7.8.3</a>. Example: Expanded Retrieval of Recurring Events
</h4></span>
2592 In this example, the client requests the server to return VEVENT
2593 components that overlap the time range from January
2,
2006, at
00:
2594 00:
00 A.M. UTC to January
5,
2006, at
00:
00:
00 A.M. UTC and to return
2595 recurring calendar components expanded into individual recurrence
2596 instance calendar components. Use of the CALDAV:expand element
2597 causes the server to only return overridden recurrence instances that
2598 overlap the time range specified in that element.
2600 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
2602 >> Request
<<
2604 REPORT /bernard/work/ HTTP/
1.1
2605 Host: cal.example.com
2607 Content-Type: application/xml;
charset=
"utf-8"
2608 Content-Length: xxxx
2610 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2611 <C:calendar-query xmlns:
D=
"DAV:"
2612 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2614 <C:calendar-data
>
2615 <C:expand
start=
"20060103T000000Z"
2616 end=
"20060105T000000Z"/
>
2617 </C:calendar-data
>
2620 <C:comp-filter
name=
"VCALENDAR">
2621 <C:comp-filter
name=
"VEVENT">
2622 <C:time-range
start=
"20060103T000000Z"
2623 end=
"20060105T000000Z"/
>
2624 </C:comp-filter
>
2625 </C:comp-filter
>
2627 </C:calendar-query
>
2629 >> Response
<<
2631 HTTP/
1.1 207 Multi-Status
2632 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
2633 Content-Type: application/xml;
charset=
"utf-8"
2634 Content-Length: xxxx
2638 <span class=
"grey">Daboo, et al. Standards Track [Page
45]
</span>
2639 </pre><pre class=
"newpage"><a name=
"page-46" id=
"page-46" href=
"#page-46" class=
"invisible"> </a>
2640 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2643 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2644 <D:multistatus xmlns:
D=
"DAV:"
2645 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2647 <D:href
>http://cal.example.com/bernard/work/abcd2.ics
</D:href
>
2650 <D:getetag
>"fffff-abcd2"</D:getetag
>
2651 <C:calendar-data
>BEGIN:VCALENDAR
2653 PRODID:-//Example Corp.//CalDAV Client//EN
2655 DTSTAMP:
20060206T001121Z
2656 DTSTART:
20060103T170000
2658 RECURRENCE-ID:
20060103T170000
2660 UID:
00959BC664CA650E933C892C@example.com
2663 DTSTAMP:
20060206T001121Z
2664 DTSTART:
20060104T190000
2666 RECURRENCE-ID:
20060104T170000
2667 SUMMARY:Event #
2 bis
2668 UID:
00959BC664CA650E933C892C@example.com
2671 </C:calendar-data
>
2673 <D:status
>HTTP/
1.1 200 OK
</D:status
>
2677 <D:href
>http://cal.example.com/bernard/work/abcd3.ics
</D:href
>
2680 <D:getetag
>"fffff-abcd3"</D:getetag
>
2681 <C:calendar-data
>BEGIN:VCALENDAR
2683 PRODID:-//Example Corp.//CalDAV Client//EN
2685 ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com
2686 ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com
2687 DTSTAMP:
20060206T001220Z
2688 DTSTART:
20060104T150000
2690 LAST-MODIFIED:
20060206T001330Z
2694 <span class=
"grey">Daboo, et al. Standards Track [Page
46]
</span>
2695 </pre><pre class=
"newpage"><a name=
"page-47" id=
"page-47" href=
"#page-47" class=
"invisible"> </a>
2696 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2699 ORGANIZER:mailto:cyrus@example.com
2703 UID:DC6C50A017428C5216A2F1CD@example.com
2704 X-ABC-GUID:E1CX5Dr-
0007ym-Hz@example.com
2707 </C:calendar-data
>
2709 <D:status
>HTTP/
1.1 200 OK
</D:status
>
2712 </D:multistatus
>
2750 <span class=
"grey">Daboo, et al. Standards Track [Page
47]
</span>
2751 </pre><pre class=
"newpage"><a name=
"page-48" id=
"page-48" href=
"#page-48" class=
"invisible"> </a>
2752 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2755 <span class=
"h4"><h4><a name=
"section-7.8.4">7.8.4</a>. Example: Partial Retrieval of Stored Free Busy Components
</h4></span>
2757 In this example, the client requests the server to return the
2758 VFREEBUSY components that have free busy information that overlap the
2759 time range from January
2,
2006, at
00:
00:
00 A.M. UTC (inclusively)
2760 to January
3,
2006, at
00:
00:
00 A.M. UTC (exclusively). Use of the
2761 CALDAV:limit-freebusy-set element causes the server to only return
2762 the FREEBUSY property values that overlap the time range specified in
2763 that element. Note that this is not an example of discovering when
2764 the calendar owner is busy.
2766 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
2768 >> Request
<<
2770 REPORT /bernard/work/ HTTP/
1.1
2771 Host: cal.example.com
2773 Content-Type: application/xml;
charset=
"utf-8"
2774 Content-Length: xxxx
2776 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2777 <C:calendar-query xmlns:
D=
"DAV:"
2778 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2780 <C:calendar-data
>
2781 <C:limit-freebusy-set
start=
"20060102T000000Z"
2782 end=
"20060103T000000Z"/
>
2783 </C:calendar-data
>
2786 <C:comp-filter
name=
"VCALENDAR">
2787 <C:comp-filter
name=
"VFREEBUSY">
2788 <C:time-range
start=
"20060102T000000Z"
2789 end=
"20060103T000000Z"/
>
2790 </C:comp-filter
>
2791 </C:comp-filter
>
2793 </C:calendar-query
>
2806 <span class=
"grey">Daboo, et al. Standards Track [Page
48]
</span>
2807 </pre><pre class=
"newpage"><a name=
"page-49" id=
"page-49" href=
"#page-49" class=
"invisible"> </a>
2808 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2811 >> Response
<<
2813 HTTP/
1.1 207 Multi-Status
2814 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
2815 Content-Type: application/xml;
charset=
"utf-8"
2816 Content-Length: xxxx
2818 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2819 <D:multistatus xmlns:
D=
"DAV:"
2820 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2822 <D:href
>http://cal.example.com/bernard/work/abcd8.ics
</D:href
>
2825 <D:getetag
>"fffff-abcd8"</D:getetag
>
2826 <C:calendar-data
>BEGIN:VCALENDAR
2828 PRODID:-//Example Corp.//CalDAV Client//EN
2830 ORGANIZER;
CN=
"Bernard Desruisseaux":mailto:bernard@example.com
2831 UID:
76ef34-
54a3d2@example.com
2832 DTSTAMP:
20050530T123421Z
2833 DTSTART:
20060101T100000Z
2834 DTEND:
20060108T100000Z
2835 FREEBUSY;FBTYPE=BUSY-TENTATIVE:
20060102T100000Z/
20060102T120000Z
2838 </C:calendar-data
>
2840 <D:status
>HTTP/
1.1 200 OK
</D:status
>
2843 </D:multistatus
>
2862 <span class=
"grey">Daboo, et al. Standards Track [Page
49]
</span>
2863 </pre><pre class=
"newpage"><a name=
"page-50" id=
"page-50" href=
"#page-50" class=
"invisible"> </a>
2864 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2867 <span class=
"h4"><h4><a name=
"section-7.8.5">7.8.5</a>. Example: Retrieval of To-Dos by Alarm Time Range
</h4></span>
2869 In this example, the client requests the server to return the VTODO
2870 components that have an alarm trigger scheduled in the specified time
2873 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
2875 >> Request
<<
2877 REPORT /bernard/work/ HTTP/
1.1
2878 Host: cal.example.com
2880 Content-Type: application/xml;
charset=
"utf-8"
2881 Content-Length: xxxx
2883 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2884 <C:calendar-query xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2885 <D:prop xmlns:
D=
"DAV:">
2887 <C:calendar-data/
>
2890 <C:comp-filter
name=
"VCALENDAR">
2891 <C:comp-filter
name=
"VTODO">
2892 <C:comp-filter
name=
"VALARM">
2893 <C:time-range
start=
"20060106T100000Z"
2894 end=
"20060107T100000Z"/
>
2895 </C:comp-filter
>
2896 </C:comp-filter
>
2897 </C:comp-filter
>
2899 </C:calendar-query
>
2918 <span class=
"grey">Daboo, et al. Standards Track [Page
50]
</span>
2919 </pre><pre class=
"newpage"><a name=
"page-51" id=
"page-51" href=
"#page-51" class=
"invisible"> </a>
2920 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2923 >> Response
<<
2925 HTTP/
1.1 207 Multi-Status
2926 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
2927 Content-Type: application/xml;
charset=
"utf-8"
2928 Content-Length: xxxx
2930 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2931 <D:multistatus xmlns:
D=
"DAV:"
2932 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2934 <D:href
>http://cal.example.com/bernard/work/abcd4.ics
</D:href
>
2937 <D:getetag
>"fffff-abcd4"</D:getetag
>
2938 <C:calendar-data
>BEGIN:VCALENDAR
2940 PRODID:-//Example Corp.//CalDAV Client//EN
2942 DTSTAMP:
20060205T235300Z
2943 DUE;TZID=US/Eastern:
20060106T120000
2944 LAST-MODIFIED:
20060205T235308Z
2948 UID:E10BA47467C5C69BB74E8720@example.com
2951 TRIGGER;RELATED=START:-PT10M
2955 </C:calendar-data
>
2957 <D:status
>HTTP/
1.1 200 OK
</D:status
>
2960 </D:multistatus
>
2962 <span class=
"h4"><h4><a name=
"section-7.8.6">7.8.6</a>. Example: Retrieval of Event by UID
</h4></span>
2964 In this example, the client requests the server to return the VEVENT
2965 component that has the UID property set to
2966 "DC6C50A017428C5216A2F1CD@example.com".
2968 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
2974 <span class=
"grey">Daboo, et al. Standards Track [Page
51]
</span>
2975 </pre><pre class=
"newpage"><a name=
"page-52" id=
"page-52" href=
"#page-52" class=
"invisible"> </a>
2976 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
2979 >> Request
<<
2981 REPORT /bernard/work/ HTTP/
1.1
2982 Host: cal.example.com
2984 Content-Type: application/xml;
charset=
"utf-8"
2985 Content-Length: xxxx
2987 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
2988 <C:calendar-query xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
2989 <D:prop xmlns:
D=
"DAV:">
2991 <C:calendar-data/
>
2994 <C:comp-filter
name=
"VCALENDAR">
2995 <C:comp-filter
name=
"VEVENT">
2996 <C:prop-filter
name=
"UID">
2997 <C:text-match
collation=
"i;octet"
2998 >DC6C50A017428C5216A2F1CD@example.com
</C:text-match
>
2999 </C:prop-filter
>
3000 </C:comp-filter
>
3001 </C:comp-filter
>
3003 </C:calendar-query
>
3005 >> Response
<<
3007 HTTP/
1.1 207 Multi-Status
3008 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
3009 Content-Type: application/xml;
charset=
"utf-8"
3010 Content-Length: xxxx
3012 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3013 <D:multistatus xmlns:
D=
"DAV:"
3014 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3016 <D:href
>http://cal.example.com/bernard/work/abcd3.ics
</D:href
>
3019 <D:getetag
>"fffff-abcd3"</D:getetag
>
3020 <C:calendar-data
>BEGIN:VCALENDAR
3022 PRODID:-//Example Corp.//CalDAV Client//EN
3024 LAST-MODIFIED:
20040110T032845Z
3030 <span class=
"grey">Daboo, et al. Standards Track [Page
52]
</span>
3031 </pre><pre class=
"newpage"><a name=
"page-53" id=
"page-53" href=
"#page-53" class=
"invisible"> </a>
3032 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3035 DTSTART:
20000404T020000
3036 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
3042 DTSTART:
20001026T020000
3043 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
3050 ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com
3051 ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com
3052 DTSTAMP:
20060206T001220Z
3053 DTSTART;TZID=US/Eastern:
20060104T100000
3055 LAST-MODIFIED:
20060206T001330Z
3056 ORGANIZER:mailto:cyrus@example.com
3060 UID:DC6C50A017428C5216A2F1CD@example.com
3061 X-ABC-GUID:E1CX5Dr-
0007ym-Hz@example.com
3064 </C:calendar-data
>
3066 <D:status
>HTTP/
1.1 200 OK
</D:status
>
3069 </D:multistatus
>
3071 <span class=
"h4"><h4><a name=
"section-7.8.7">7.8.7</a>. Example: Retrieval of Events by PARTSTAT
</h4></span>
3073 In this example, the client requests the server to return the VEVENT
3074 components that have the ATTENDEE property with the value
3075 "mailto:lisa@example.com" and for which the PARTSTAT parameter is set
3078 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
3086 <span class=
"grey">Daboo, et al. Standards Track [Page
53]
</span>
3087 </pre><pre class=
"newpage"><a name=
"page-54" id=
"page-54" href=
"#page-54" class=
"invisible"> </a>
3088 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3091 >> Request
<<
3093 REPORT /bernard/work/ HTTP/
1.1
3094 Host: cal.example.com
3096 Content-Type: application/xml;
charset=
"utf-8"
3097 Content-Length: xxxx
3099 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3100 <C:calendar-query xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3101 <D:prop xmlns:
D=
"DAV:">
3103 <C:calendar-data/
>
3106 <C:comp-filter
name=
"VCALENDAR">
3107 <C:comp-filter
name=
"VEVENT">
3108 <C:prop-filter
name=
"ATTENDEE">
3109 <C:text-match
collation=
"i;ascii-casemap"
3110 >mailto:lisa@example.com
</C:text-match
>
3111 <C:param-filter
name=
"PARTSTAT">
3112 <C:text-match
collation=
"i;ascii-casemap"
3113 >NEEDS-ACTION
</C:text-match
>
3114 </C:param-filter
>
3115 </C:prop-filter
>
3116 </C:comp-filter
>
3117 </C:comp-filter
>
3119 </C:calendar-query
>
3121 >> Response
<<
3123 HTTP/
1.1 207 Multi-Status
3124 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
3125 Content-Type: application/xml;
charset=
"utf-8"
3126 Content-Length: xxxx
3128 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3129 <D:multistatus xmlns:
D=
"DAV:"
3130 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3132 <D:href
>http://cal.example.com/bernard/work/abcd3.ics
</D:href
>
3135 <D:getetag
>"fffff-abcd3"</D:getetag
>
3136 <C:calendar-data
>BEGIN:VCALENDAR
3138 PRODID:-//Example Corp.//CalDAV Client//EN
3142 <span class=
"grey">Daboo, et al. Standards Track [Page
54]
</span>
3143 </pre><pre class=
"newpage"><a name=
"page-55" id=
"page-55" href=
"#page-55" class=
"invisible"> </a>
3144 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3148 LAST-MODIFIED:
20040110T032845Z
3151 DTSTART:
20000404T020000
3152 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
3158 DTSTART:
20001026T020000
3159 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
3166 ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com
3167 ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com
3168 DTSTAMP:
20060206T001220Z
3169 DTSTART;TZID=US/Eastern:
20060104T100000
3171 LAST-MODIFIED:
20060206T001330Z
3172 ORGANIZER:mailto:cyrus@example.com
3176 UID:DC6C50A017428C5216A2F1CD@example.com
3177 X-ABC-GUID:E1CX5Dr-
0007ym-Hz@example.com
3180 </C:calendar-data
>
3182 <D:status
>HTTP/
1.1 200 OK
</D:status
>
3185 </D:multistatus
>
3187 <span class=
"h4"><h4><a name=
"section-7.8.8">7.8.8</a>. Example: Retrieval of Events Only
</h4></span>
3189 In this example, the client requests the server to return all VEVENT
3192 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
3198 <span class=
"grey">Daboo, et al. Standards Track [Page
55]
</span>
3199 </pre><pre class=
"newpage"><a name=
"page-56" id=
"page-56" href=
"#page-56" class=
"invisible"> </a>
3200 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3203 >> Request
<<
3205 REPORT /bernard/work/ HTTP/
1.1
3206 Host: cal.example.com
3208 Content-Type: application/xml;
charset=
"utf-8"
3209 Content-Length: xxxx
3211 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3212 <C:calendar-query xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3213 <D:prop xmlns:
D=
"DAV:">
3215 <C:calendar-data/
>
3218 <C:comp-filter
name=
"VCALENDAR">
3219 <C:comp-filter
name=
"VEVENT"/
>
3220 </C:comp-filter
>
3222 </C:calendar-query
>
3224 >> Response
<<
3226 HTTP/
1.1 207 Multi-Status
3227 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
3228 Content-Type: application/xml;
charset=
"utf-8"
3229 Content-Length: xxxx
3231 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3232 <D:multistatus xmlns:
D=
"DAV:"
3233 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3235 <D:href
>http://cal.example.com/bernard/work/abcd1.ics
</D:href
>
3238 <D:getetag
>"fffff-abcd1"</D:getetag
>
3239 <C:calendar-data
>BEGIN:VCALENDAR
3241 PRODID:-//Example Corp.//CalDAV Client//EN
3243 LAST-MODIFIED:
20040110T032845Z
3246 DTSTART:
20000404T020000
3247 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
3254 <span class=
"grey">Daboo, et al. Standards Track [Page
56]
</span>
3255 </pre><pre class=
"newpage"><a name=
"page-57" id=
"page-57" href=
"#page-57" class=
"invisible"> </a>
3256 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3261 DTSTART:
20001026T020000
3262 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
3269 DTSTAMP:
20060206T001102Z
3270 DTSTART;TZID=US/Eastern:
20060102T100000
3273 Description:Go Steelers!
3274 UID:
74855313FA803DA593CD579A@example.com
3277 </C:calendar-data
>
3279 <D:status
>HTTP/
1.1 200 OK
</D:status
>
3283 <D:href
>http://cal.example.com/bernard/work/abcd2.ics
</D:href
>
3286 <D:getetag
>"fffff-abcd2"</D:getetag
>
3287 <C:calendar-data
>BEGIN:VCALENDAR
3289 PRODID:-//Example Corp.//CalDAV Client//EN
3291 LAST-MODIFIED:
20040110T032845Z
3294 DTSTART:
20000404T020000
3295 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
3301 DTSTART:
20001026T020000
3302 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
3310 <span class=
"grey">Daboo, et al. Standards Track [Page
57]
</span>
3311 </pre><pre class=
"newpage"><a name=
"page-58" id=
"page-58" href=
"#page-58" class=
"invisible"> </a>
3312 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3317 DTSTAMP:
20060206T001121Z
3318 DTSTART;TZID=US/Eastern:
20060102T120000
3320 RRULE:FREQ=DAILY;COUNT=
5
3322 UID:
00959BC664CA650E933C892C@example.com
3325 DTSTAMP:
20060206T001121Z
3326 DTSTART;TZID=US/Eastern:
20060104T140000
3328 RECURRENCE-ID;TZID=US/Eastern:
20060104T120000
3329 SUMMARY:Event #
2 bis
3330 UID:
00959BC664CA650E933C892C@example.com
3333 DTSTAMP:
20060206T001121Z
3334 DTSTART;TZID=US/Eastern:
20060106T140000
3336 RECURRENCE-ID;TZID=US/Eastern:
20060106T120000
3337 SUMMARY:Event #
2 bis bis
3338 UID:
00959BC664CA650E933C892C@example.com
3341 </C:calendar-data
>
3343 <D:status
>HTTP/
1.1 200 OK
</D:status
>
3347 <D:href
>http://cal.example.com/bernard/work/abcd3.ics
</D:href
>
3350 <D:getetag
>"fffff-abcd3"</D:getetag
>
3351 <C:calendar-data
>BEGIN:VCALENDAR
3353 PRODID:-//Example Corp.//CalDAV Client//EN
3355 LAST-MODIFIED:
20040110T032845Z
3358 DTSTART:
20000404T020000
3359 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
3366 <span class=
"grey">Daboo, et al. Standards Track [Page
58]
</span>
3367 </pre><pre class=
"newpage"><a name=
"page-59" id=
"page-59" href=
"#page-59" class=
"invisible"> </a>
3368 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3373 DTSTART:
20001026T020000
3374 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
3381 ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com
3382 ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com
3383 DTSTAMP:
20060206T001220Z
3384 DTSTART;TZID=US/Eastern:
20060104T100000
3386 LAST-MODIFIED:
20060206T001330Z
3387 ORGANIZER:mailto:cyrus@example.com
3391 UID:DC6C50A017428C5216A2F1CD@example.com
3392 X-ABC-GUID:E1CX5Dr-
0007ym-Hz@example.com
3395 </C:calendar-data
>
3397 <D:status
>HTTP/
1.1 200 OK
</D:status
>
3400 </D:multistatus
>
3402 <span class=
"h4"><h4><a name=
"section-7.8.9">7.8.9</a>. Example: Retrieval of All Pending To-Dos
</h4></span>
3404 In this example, the client requests the server to return all VTODO
3405 components that do not include a COMPLETED property and do not have a
3406 STATUS property value matching CANCELLED, i.e., VTODOs that still
3407 need to be worked on.
3409 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
3422 <span class=
"grey">Daboo, et al. Standards Track [Page
59]
</span>
3423 </pre><pre class=
"newpage"><a name=
"page-60" id=
"page-60" href=
"#page-60" class=
"invisible"> </a>
3424 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3427 >> Request
<<
3429 REPORT /bernard/work/ HTTP/
1.1
3430 Host: cal.example.com
3432 Content-Type: application/xml;
charset=
"utf-8"
3433 Content-Length: xxxx
3435 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3436 <C:calendar-query xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3437 <D:prop xmlns:
D=
"DAV:">
3439 <C:calendar-data/
>
3442 <C:comp-filter
name=
"VCALENDAR">
3443 <C:comp-filter
name=
"VTODO">
3444 <C:prop-filter
name=
"COMPLETED">
3445 <C:is-not-defined/
>
3446 </C:prop-filter
>
3447 <C:prop-filter
name=
"STATUS">
3449 negate-condition=
"yes">CANCELLED
</C:text-match
>
3450 </C:prop-filter
>
3451 </C:comp-filter
>
3452 </C:comp-filter
>
3454 </C:calendar-query
>
3456 >> Response
<<
3458 HTTP/
1.1 207 Multi-Status
3459 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
3460 Content-Type: application/xml;
charset=
"utf-8"
3461 Content-Length: xxxx
3463 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3464 <D:multistatus xmlns:
D=
"DAV:"
3465 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3467 <D:href
>http://cal.example.com/bernard/work/abcd4.ics
</D:href
>
3470 <D:getetag
>"fffff-abcd4"</D:getetag
>
3471 <C:calendar-data
>BEGIN:VCALENDAR
3473 PRODID:-//Example Corp.//CalDAV Client//EN
3478 <span class=
"grey">Daboo, et al. Standards Track [Page
60]
</span>
3479 </pre><pre class=
"newpage"><a name=
"page-61" id=
"page-61" href=
"#page-61" class=
"invisible"> </a>
3480 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3483 DTSTAMP:
20060205T235335Z
3484 DUE;VALUE=DATE:
20060104
3487 UID:DDDEEB7915FA61233B861457@example.com
3490 TRIGGER;RELATED=START:-PT10M
3494 </C:calendar-data
>
3496 <D:status
>HTTP/
1.1 200 OK
</D:status
>
3501 <D:href
>http://cal.example.com/bernard/work/abcd5.ics
</D:href
>
3504 <D:getetag
>"fffff-abcd5"</D:getetag
>
3505 <C:calendar-data
>BEGIN:VCALENDAR
3507 PRODID:-//Example Corp.//CalDAV Client//EN
3509 DTSTAMP:
20060205T235300Z
3510 DUE;VALUE=DATE:
20060106
3511 LAST-MODIFIED:
20060205T235308Z
3515 UID:E10BA47467C5C69BB74E8720@example.com
3518 TRIGGER;RELATED=START:-PT10M
3522 </C:calendar-data
>
3524 <D:status
>HTTP/
1.1 200 OK
</D:status
>
3527 </D:multistatus
>
3534 <span class=
"grey">Daboo, et al. Standards Track [Page
61]
</span>
3535 </pre><pre class=
"newpage"><a name=
"page-62" id=
"page-62" href=
"#page-62" class=
"invisible"> </a>
3536 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3539 <span class=
"h4"><h4><a name=
"section-7.8.10">7.8.10</a>. Example: Attempt to Query Unsupported Property
</h4></span>
3541 In this example, the client requests the server to return all VEVENT
3542 components that include an X-ABC-GUID property with a value matching
3543 "ABC". However, the server does not support querying that non-
3544 standard property, and instead returns an error response.
3546 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
3548 >> Request
<<
3550 REPORT /bernard/work/ HTTP/
1.1
3551 Host: cal.example.com
3553 Content-Type: application/xml;
charset=
"utf-8"
3554 Content-Length: xxxx
3556 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3557 <C:calendar-query xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3558 <D:prop xmlns:
D=
"DAV:">
3560 <C:calendar-data/
>
3563 <C:comp-filter
name=
"VCALENDAR">
3564 <C:comp-filter
name=
"VEVENT">
3565 <C:prop-filter
name=
"X-ABC-GUID">
3566 <C:text-match
>ABC
</C:text-match
>
3567 </C:prop-filter
>
3568 </C:comp-filter
>
3569 </C:comp-filter
>
3571 </C:calendar-query
>
3573 >> Response
<<
3575 HTTP/
1.1 403 Forbidden
3576 Date: Sat,
11 Nov
2005 09:
32:
12 GMT
3577 Content-Type: application/xml;
charset=
"utf-8"
3578 Content-Length: xxxx
3580 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3582 <C:supported-filter
>
3583 <C:prop-filter
name=
"X-ABC-GUID"/
>
3584 </C:supported-filter
>
3590 <span class=
"grey">Daboo, et al. Standards Track [Page
62]
</span>
3591 </pre><pre class=
"newpage"><a name=
"page-63" id=
"page-63" href=
"#page-63" class=
"invisible"> </a>
3592 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3595 <span class=
"h3"><h3><a name=
"section-7.9">7.9</a>. CALDAV:calendar-multiget REPORT
</h3></span>
3597 The CALDAV:calendar-multiget REPORT is used to retrieve specific
3598 calendar object resources from within a collection, if the Request-
3599 URI is a collection, or to retrieve a specific calendar object
3600 resource, if the Request-URI is a calendar object resource. This
3601 report is similar to the CALDAV:calendar-query REPORT (see
3602 <a href=
"#section-7.8">Section
7.8</a>), except that it takes a list of DAV:href elements,
3603 instead of a CALDAV:filter element, to determine which calendar
3604 object resources to return.
3606 Support for the CALDAV:calendar-multiget REPORT is REQUIRED.
3610 The request body MUST be a CALDAV:calendar-multiget XML element
3611 (see
<a href=
"#section-9.10">Section
9.10</a>). If the Request-URI is a collection resource,
3612 then the DAV:href elements MUST refer to calendar object resources
3613 within that collection, and they MAY refer to calendar object
3614 resources at any depth within the collection. As a result, the
3615 "Depth" header MUST be ignored by the server and SHOULD NOT be
3616 sent by the client. If the Request-URI refers to a non-collection
3617 resource, then there MUST be a single DAV:href element that is
3618 equivalent to the Request-URI.
3620 The response body for a successful request MUST be a DAV:
3621 multistatus XML element.
3623 The response body for a successful CALDAV:calendar-multiget REPORT
3624 request MUST contain a DAV:response element for each calendar
3625 object resource referenced by the provided set of DAV:href
3626 elements. Calendar data is being returned in the CALDAV:calendar-
3627 data element inside the DAV:prop element.
3629 In the case of an error accessing any of the provided DAV:href
3630 resources, the server MUST return the appropriate error status
3631 code in the DAV:status element of the corresponding DAV:response
3636 (CALDAV:supported-calendar-data): The attributes
"content-type"
3637 and
"version" of the CALDAV:calendar-data XML elements (see
3638 <a href=
"#section-9.6">Section
9.6</a>) specify a media type supported by the server for
3639 calendar object resources.
3641 (CALDAV:min-date-time): Any XML element specifying a range of time
3642 MUST have its start or end DATE or DATE-TIME values greater than
3646 <span class=
"grey">Daboo, et al. Standards Track [Page
63]
</span>
3647 </pre><pre class=
"newpage"><a name=
"page-64" id=
"page-64" href=
"#page-64" class=
"invisible"> </a>
3648 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3651 or equal to the value of the CALDAV:min-date-time property value
3652 (
<a href=
"#section-5.2.6">Section
5.2.6</a>) on the calendar collections being targeted by the
3655 (CALDAV:max-date-time): Any XML element specifying a range of time
3656 MUST have its start or end DATE or DATE-TIME values less than or
3657 equal to the value of the CALDAV:max-date-time property value
3658 (
<a href=
"#section-5.2.7">Section
5.2.7</a>) on the calendar collections being targeted by the
3665 <span class=
"h4"><h4><a name=
"section-7.9.1">7.9.1</a>. Example: Successful CALDAV:calendar-multiget REPORT
</h4></span>
3667 In this example, the client requests the server to return specific
3668 properties of the VEVENT components referenced by specific URIs. In
3669 addition, the DAV:getetag property is also requested and returned as
3670 part of the response. Note that in this example, the resource at
3671 http://cal.example.com/bernard/work/mtg1.ics does not exist,
3672 resulting in an error status response.
3674 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
3676 >> Request
<<
3678 REPORT /bernard/work/ HTTP/
1.1
3679 Host: cal.example.com
3680 Content-Type: application/xml;
charset=
"utf-8"
3681 Content-Length: xxxx
3683 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3684 <C:calendar-multiget xmlns:
D=
"DAV:"
3685 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3688 <C:calendar-data/
>
3690 <D:href
>/bernard/work/abcd1.ics
</D:href
>
3691 <D:href
>/bernard/work/mtg1.ics
</D:href
>
3692 </C:calendar-multiget
>
3694 >> Response
<<
3696 HTTP/
1.1 207 Multi-Status
3697 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
3698 Content-Type: application/xml;
charset=
"utf-8"
3702 <span class=
"grey">Daboo, et al. Standards Track [Page
64]
</span>
3703 </pre><pre class=
"newpage"><a name=
"page-65" id=
"page-65" href=
"#page-65" class=
"invisible"> </a>
3704 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3707 Content-Length: xxxx
3709 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3710 <D:multistatus xmlns:
D=
"DAV:"
3711 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3713 <D:href
>http://cal.example.com/bernard/work/abcd1.ics
</D:href
>
3716 <D:getetag
>"fffff-abcd1"</D:getetag
>
3717 <C:calendar-data
>BEGIN:VCALENDAR
3719 PRODID:-//Example Corp.//CalDAV Client//EN
3721 LAST-MODIFIED:
20040110T032845Z
3724 DTSTART:
20000404T020000
3725 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
3731 DTSTART:
20001026T020000
3732 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
3739 DTSTAMP:
20060206T001102Z
3740 DTSTART;TZID=US/Eastern:
20060102T100000
3743 Description:Go Steelers!
3744 UID:
74855313FA803DA593CD579A@example.com
3747 </C:calendar-data
>
3749 <D:status
>HTTP/
1.1 200 OK
</D:status
>
3753 <D:href
>http://cal.example.com/bernard/work/mtg1.ics
</D:href
>
3754 <D:status
>HTTP/
1.1 404 Not Found
</D:status
>
3758 <span class=
"grey">Daboo, et al. Standards Track [Page
65]
</span>
3759 </pre><pre class=
"newpage"><a name=
"page-66" id=
"page-66" href=
"#page-66" class=
"invisible"> </a>
3760 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3764 </D:multistatus
>
3766 <span class=
"h3"><h3><a name=
"section-7.10">7.10</a>. CALDAV:free-busy-query REPORT
</h3></span>
3768 The CALDAV:free-busy-query REPORT generates a VFREEBUSY component
3769 containing free busy information for all the calendar object
3770 resources targeted by the request and that have the CALDAV:read-free-
3771 busy or DAV:read privilege granted to the current user.
3773 Only VEVENT components without a TRANSP property or with the TRANSP
3774 property set to OPAQUE, and VFREEBUSY components SHOULD be considered
3775 in generating the free busy time information.
3777 In the case of VEVENT components, the free or busy time type (FBTYPE)
3778 of the FREEBUSY properties in the returned VFREEBUSY component SHOULD
3779 be derived from the value of the TRANSP and STATUS properties, as
3780 outlined in the table below:
3782 +---------------------------++------------------+
3783 | VEVENT || VFREEBUSY |
3784 +-------------+-------------++------------------+
3785 | TRANSP | STATUS || FBTYPE |
3786 +=============+=============++==================+
3787 | | CONFIRMED || BUSY |
3789 | OPAQUE +-------------++------------------+
3790 | (default) | CANCELLED || FREE |
3791 | +-------------++------------------+
3792 | | TENTATIVE || BUSY-TENTATIVE |
3793 | +-------------++------------------+
3794 | | x-name || BUSY or |
3796 +-------------+-------------++------------------+
3798 | TRANSPARENT | CANCELLED || FREE |
3801 +-------------+-------------++------------------+
3803 Duplicate busy time periods with the same FBTYPE parameter value
3804 SHOULD NOT be specified in the returned VFREEBUSY component. Servers
3805 SHOULD coalesce consecutive or overlapping busy time periods of the
3806 same type. Busy time periods with different FBTYPE parameter values
3809 Support for the CALDAV:free-busy-query REPORT is REQUIRED.
3814 <span class=
"grey">Daboo, et al. Standards Track [Page
66]
</span>
3815 </pre><pre class=
"newpage"><a name=
"page-67" id=
"page-67" href=
"#page-67" class=
"invisible"> </a>
3816 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3821 The request body MUST be a CALDAV:free-busy-query XML element (see
3822 <a href=
"#section-9.11">Section
9.11</a>), which MUST contain exactly one CALDAV:time-range
3823 XML element, as defined in
<a href=
"#section-9.9">Section
9.9</a>.
3825 The request MAY include a Depth header. If no Depth header is
3826 included, Depth:
0 is assumed.
3828 The response body for a successful request MUST be an iCalendar
3829 object that contains exactly one VFREEBUSY component that
3830 describes the busy time intervals for the calendar object
3831 resources containing VEVENT, or VFREEBUSY components that satisfy
3832 the Depth value and for which the current user is at least granted
3833 the CALDAV:read-free-busy privilege. If no calendar object
3834 resources are found to satisfy these conditions, a VFREEBUSY
3835 component with no FREEBUSY property MUST be returned. This report
3836 only returns busy time information. Free time information can be
3837 inferred from the returned busy time information.
3839 If the current user is not granted the CALDAV:read-free-busy or
3840 DAV:read privileges on the Request-URI, the CALDAV:free-busy-query
3841 REPORT request MUST fail and return a
404 (Not Found) status
3842 value. This restriction will prevent users from discovering URLs
3843 of resources for which they are only granted the CALDAV:read-free-
3846 The CALDAV:free-busy-query REPORT request can only be run against
3847 a collection (either a regular collection or a calendar
3848 collection). An attempt to run the report on a calendar object
3849 resource MUST fail and return a
403 (Forbidden) status value.
3857 (DAV:number-of-matches-within-limits): The number of matching
3858 calendar object resources must fall within server-specific,
3859 predefined limits. For example, this postcondition might fail if
3860 the specified CALDAV:time-range would cause an extremely large
3861 number of calendar object resources to be considered in computing
3870 <span class=
"grey">Daboo, et al. Standards Track [Page
67]
</span>
3871 </pre><pre class=
"newpage"><a name=
"page-68" id=
"page-68" href=
"#page-68" class=
"invisible"> </a>
3872 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3875 <span class=
"h4"><h4><a name=
"section-7.10.1">7.10.1</a>. Example: Successful CALDAV:free-busy-query REPORT
</h4></span>
3877 In this example, the client requests the server to return free busy
3878 information on the calendar collection /bernard/work/, between
9:
00
3879 A.M. and
5:
00 P.M. EST (
2:
00 P.M. and
10:
00 P.M. UTC) on the January
3880 4,
2006. The server responds, indicating two busy time intervals of
3881 one hour, one of which is tentative.
3883 See
<a href=
"#appendix-B">Appendix B
</a> for the calendar data being targeted by this example.
3885 >> Request
<<
3887 REPORT /bernard/work/ HTTP/
1.1
3888 Host: cal.example.com
3890 Content-Type: application/xml;
charset=
"utf-8"
3891 Content-Length: xxxx
3893 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
3894 <C:free-busy-query xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
3895 <C:time-range
start=
"20060104T140000Z"
3896 end=
"20060105T220000Z"/
>
3897 </C:free-busy-query
>
3899 >> Response
<<
3902 Date: Sat,
11 Nov
2006 09:
32:
12 GMT
3903 Content-Type: text/calendar
3904 Content-Length: xxxx
3908 PRODID:-//Example Corp.//CalDAV Server//EN
3910 DTSTAMP:
20050125T090000Z
3911 DTSTART:
20060104T140000Z
3912 DTEND:
20060105T220000Z
3913 FREEBUSY;FBTYPE=BUSY-TENTATIVE:
20060104T150000Z/PT1H
3914 FREEBUSY:
20060104T190000Z/PT1H
3926 <span class=
"grey">Daboo, et al. Standards Track [Page
68]
</span>
3927 </pre><pre class=
"newpage"><a name=
"page-69" id=
"page-69" href=
"#page-69" class=
"invisible"> </a>
3928 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3931 <span class=
"h2"><h2><a name=
"section-8">8</a>. Guidelines
</h2></span>
3933 <span class=
"h3"><h3><a name=
"section-8.1">8.1</a>. Client-to-Client Interoperability
</h3></span>
3935 There are a number of actions clients can take that will be legal
3936 (the server will not return errors), but that can degrade
3937 interoperability with other client implementations accessing the same
3938 data. For example, a recurrence rule could be replaced with a set of
3939 recurrence dates, a single recurring event could be replaced with a
3940 set of independent resources to represent each recurrence, or the
3941 start/end time values can be translated from the original time zone
3942 to another time zone. Although this advice amounts to iCalendar
3943 interoperability best practices and is not limited only to CalDAV
3944 usage, interoperability problems are likely to be more evident in
3947 <span class=
"h3"><h3><a name=
"section-8.2">8.2</a>. Synchronization Operations
</h3></span>
3949 WebDAV already provides functionality required to synchronize a
3950 collection or set of collections, to make changes offline, and
3951 provides a simple way to resolve conflicts when reconnected. ETags
3952 are the key to making this work, but these are not required of all
3953 WebDAV servers. Since offline functionality is more important to
3954 calendar applications than to some other WebDAV applications, CalDAV
3955 servers MUST support ETags, as specified in
<a href=
"#section-5.3.4">Section
5.3.4</a>.
3957 <span class=
"h4"><h4><a name=
"section-8.2.1">8.2.1</a>. Use of Reports
</h4></span>
3959 <span class=
"h5"><h5><a name=
"section-8.2.1.1">8.2.1.1</a>. Restrict the Time Range
</h5></span>
3961 The reports provided in CalDAV can be used by clients to optimize
3962 their performance in terms of network bandwidth usage and resource
3963 consumption on the local client machine. Both are certainly major
3964 considerations for mobile or handheld devices with limited capacity,
3965 but they are also relevant to desktop client applications in cases
3966 where the calendar collections contain large amounts of data.
3968 Typically, clients present calendar data to users in views that span
3969 a finite time interval, so whenever possible, clients should only
3970 retrieve calendar components from the server using CALDAV:calendar-
3971 query REPORT, combined with a CALDAV:time-range element, to limit the
3972 set of returned components to just those needed to populate the
3982 <span class=
"grey">Daboo, et al. Standards Track [Page
69]
</span>
3983 </pre><pre class=
"newpage"><a name=
"page-70" id=
"page-70" href=
"#page-70" class=
"invisible"> </a>
3984 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
3987 <span class=
"h5"><h5><a name=
"section-8.2.1.2">8.2.1.2</a>. Synchronize by Time Range
</h5></span>
3989 Typically in a calendar, historical data (events, to-dos, etc. that
3990 have completed prior to the current date) do not change, though they
3991 may be deleted. As a result, a client can speed up the
3992 synchronization process by only considering data for the present time
3993 and the future up to a reasonable limit (e.g., one week, one month).
3994 If the user then tries to examine a portion of the calendar outside
3995 the range that has been synchronized, the client can perform another
3996 synchronization operation on the new time interval being examined.
3997 This
"just-in-time" synchronization can minimize bandwidth for common
3998 user interaction behaviors.
4000 <span class=
"h5"><h5><a name=
"section-8.2.1.3">8.2.1.3</a>. Synchronization Process
</h5></span>
4002 If a client wants to support calendar data synchronization, as
4003 opposed to downloading calendar data each time it is needed, the
4004 client needs to cache the calendar object resource's URI and ETag,
4005 along with the actual calendar data. While the URI remains static
4006 for the lifetime of the calendar object resource, the ETag will
4007 change with each successive change to the calendar object resource.
4008 Thus, to synchronize a local data cache with the server, the client
4009 can first fetch the URI/ETag pairs for the time interval being
4010 considered, and compare those results with the cached data. Any
4011 cached component whose ETag differs from that on the server needs to
4014 In order to properly detect the changes between the server and client
4015 data, the client will need to keep a record of which calendar object
4016 resources have been created, changed, or deleted since the last
4017 synchronization operation so that it can reconcile those changes with
4018 the data on the server.
4020 Here's an example of how to do that:
4022 The client issues a CALDAV:calendar-query REPORT request for a
4023 specific time range and asks for only the DAV:getetag property to be
4038 <span class=
"grey">Daboo, et al. Standards Track [Page
70]
</span>
4039 </pre><pre class=
"newpage"><a name=
"page-71" id=
"page-71" href=
"#page-71" class=
"invisible"> </a>
4040 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4043 REPORT /bernard/work/ HTTP/
1.1
4044 Host: cal.example.com
4046 Content-Type: application/xml;
charset=
"utf-8"
4047 Content-Length: xxxx
4049 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
4050 <C:calendar-query xmlns:
D=
"DAV:"
4051 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
4056 <C:comp-filter
name=
"VCALENDAR">
4057 <C:comp-filter
name=
"VEVENT">
4058 <C:time-range
start=
"20040902T000000Z"
4059 end=
"20040903T000000Z"/
>
4060 </C:comp-filter
>
4061 </C:comp-filter
>
4063 </C:calendar-query
>
4065 The client then uses the results to determine which calendar object
4066 resources have changed, been created, or deleted on the server, and
4067 how those relate to locally cached calendar object resources that may
4068 have changed, been created, or deleted. If the client determines
4069 that there are calendar object resources on the server that need to
4070 be fetched, the client issues a CALDAV:calendar-multiget REPORT
4071 request to fetch its calendar data:
4073 REPORT /bernard/work/ HTTP/
1.1
4074 Host: cal.example.com
4075 Content-Type: application/xml;
charset=
"utf-8"
4076 Content-Length: xxxx
4078 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
4079 <C:calendar-multiget xmlns:
D=
"DAV:"
4080 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
4083 <C:calendar-data/
>
4085 <D:href
>/bernard/work/abcd1.ics
</D:href
>
4086 <D:href
>/bernard/work/mtg1.ics
</D:href
>
4087 </C:calendar-multiget
>
4094 <span class=
"grey">Daboo, et al. Standards Track [Page
71]
</span>
4095 </pre><pre class=
"newpage"><a name=
"page-72" id=
"page-72" href=
"#page-72" class=
"invisible"> </a>
4096 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4099 <span class=
"h4"><h4><a name=
"section-8.2.2">8.2.2</a>. Restrict the Properties Returned
</h4></span>
4101 A client may not need all the calendar properties of a calendar
4102 object resource when presenting information to the user. Since some
4103 calendar property values can be large (e.g., ATTACH or ATTENDEE), a
4104 client can choose to restrict the calendar properties to be returned
4105 in a calendaring REPORT request to those it knows it will use.
4107 However, if a client needs to make a change to a calendar object
4108 resource, it can only change the entire calendar object resource via
4109 a PUT request. There is currently no way to incrementally make a
4110 change to a set of calendar properties of a calendar object resource.
4111 As a result, the client will have to get the entire calendar object
4112 resource that is being changed.
4114 <span class=
"h3"><h3><a name=
"section-8.3">8.3</a>. Use of Locking
</h3></span>
4116 WebDAV locks can be used to prevent two clients that are modifying
4117 the same resource from either overwriting each others' changes
4118 (though that problem can also be solved by using ETags) or wasting
4119 time making changes that will conflict with another set of changes.
4120 In a multi-user calendar system, an interactive calendar client could
4121 lock an event while the user is editing the event, and unlock the
4122 event when the user finishes or cancels. Locks can also be used to
4123 prevent changes while data is being reorganized. For example, a
4124 calendar client might lock two calendar collections prior to moving a
4125 bunch of calendar resources from one to another.
4127 Clients are responsible for requesting a lock timeout period that is
4128 appropriate to the use case. When the user explicitly decides to
4129 reserve a resource and prevent other changes, a long timeout might be
4130 appropriate, but in cases where the client automatically decides to
4131 lock the resource, the timeout should be short (and the client can
4132 always refresh the lock should it need to). A short lock timeout
4133 means that if the client is unable to remove the lock, the other
4134 calendar users aren't prevented from making changes.
4136 <span class=
"h3"><h3><a name=
"section-8.4">8.4</a>. Finding Calendars
</h3></span>
4138 Much of the time, a calendar client (or agent) will discover a new
4139 calendar's location by being provided directly with the URL. For
4140 example, a user will type his or her own calendar location into
4141 client configuration information or copy and paste a URL from email
4142 into the calendar application. The client need only confirm that the
4143 URL points to a resource that is a calendar collection. The client
4144 may also be able to browse WebDAV collections to find calendar
4150 <span class=
"grey">Daboo, et al. Standards Track [Page
72]
</span>
4151 </pre><pre class=
"newpage"><a name=
"page-73" id=
"page-73" href=
"#page-73" class=
"invisible"> </a>
4152 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4155 The choice of HTTP URLs means that calendar object resources are
4156 backward compatible with existing software, but does have the
4157 disadvantage that existing software does not usually know to look at
4158 the OPTIONS response to that URL to determine what can be done with
4159 it. This is somewhat of a barrier for WebDAV usage as well as with
4160 CalDAV usage. This specification does not offer a way through this
4161 other than making the information available in the OPTIONS response
4162 should this be requested.
4164 For calendar sharing and scheduling use cases, one might wish to find
4165 the calendar belonging to another user. If the other user has a
4166 calendar in the same repository, that calendar can be found by using
4167 the principal namespace required by WebDAV ACL support. For other
4168 cases, the authors have no universal solution, but implementers can
4169 consider whether to use vCard [
<a href=
"http://tools.ietf.org/html/rfc2426" title=
""vCard MIME Directory Profile"">RFC2426
</a>] or LDAP [
<a href=
"http://tools.ietf.org/html/rfc4511" title=
""Lightweight Directory Access Protocol (LDAP): The Protocol"">RFC4511
</a>] standards
4170 together with calendar attributes [
<a href=
"http://tools.ietf.org/html/rfc2739" title=
""Calendar Attributes for vCard and LDAP"">RFC2739
</a>].
4172 Because CalDAV requires servers to support WebDAV ACL [
<a href=
"http://tools.ietf.org/html/rfc3744" title=
""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744
</a>],
4173 including principal namespaces, and with the addition of the CALDAV:
4174 calendar-home-set property, there are a couple options for CalDAV
4175 clients to find one's own calendar or another user's calendar.
4177 In this case, a DAV:principal-match REPORT is used to find a named
4178 property (the CALDAV:calendar-home-set) on the Principal-URL of the
4179 current user. Using this, a WebDAV client can learn
"who am I" and
4180 "where are my calendars". The REPORT request body looks like this:
4182 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
4183 <D:principal-match xmlns:
D=
"DAV:">
4186 <C:calendar-home-set
4187 xmlns:
C=
"urn:ietf:params:xml:ns:caldav"/
>
4189 </D:principal-match
>
4191 To find other users' calendars, the DAV:principal-property-search
4192 REPORT can be used to filter on some properties and return others.
4193 To search for a calendar owned by a user named
"Laurie", the REPORT
4194 request body would look like this:
4206 <span class=
"grey">Daboo, et al. Standards Track [Page
73]
</span>
4207 </pre><pre class=
"newpage"><a name=
"page-74" id=
"page-74" href=
"#page-74" class=
"invisible"> </a>
4208 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4211 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
4212 <D:principal-property-search xmlns:
D=
"DAV:">
4213 <D:property-search
>
4215 <D:displayname/
>
4217 <D:match
>Laurie
</D:match
>
4218 </D:property-search
>
4220 <C:calendar-home-set
4221 xmlns:
C=
"urn:ietf:params:xml:ns:caldav"/
>
4222 <D:displayname/
>
4224 </D:principal-property-search
>
4226 The server performs a case-sensitive or caseless search for a
4227 matching string subset of
"Laurie" within the DAV:displayname
4228 property. Thus, the server might return
"Laurie Dusseault",
"Laurier
4229 Desruisseaux", or
"Wilfrid Laurier" as matching DAV:displayname
4230 values, and return the calendars for each of these.
4232 <span class=
"h3"><h3><a name=
"section-8.5">8.5</a>. Storing and Using Attachments
</h3></span>
4234 CalDAV clients MAY create attachments in calendar components either
4235 as inline or external. This section contains some guidelines for
4236 creating and managing attachments.
4238 <span class=
"h4"><h4><a name=
"section-8.5.1">8.5.1</a>. Inline Attachments
</h4></span>
4240 CalDAV clients MUST support inline attachments as specified in
4241 iCalendar [
<a href=
"http://tools.ietf.org/html/rfc2445" title=
""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445
</a>]. CalDAV servers MUST support inline attachments,
4242 so clients can rely on being able to create attachments this way. On
4243 the other hand, inline attachments have some drawbacks:
4245 o Servers MAY impose limitations on the size of calendar object
4246 resources (i.e., refusing PUT requests of very large iCalendar
4247 objects). Servers that impose such limitations MUST use the
4248 CALDAV:max-resource-size property on a calendar collection to
4249 inform the client as to what the limitation is (see
4250 <a href=
"#section-5.2.5">Section
5.2.5</a>).
4252 o Servers MAY impose storage quota limitations on calendar
4253 collections (See [
<a href=
"http://tools.ietf.org/html/rfc4331" title=
""Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections"">RFC4331
</a>]).
4255 o Any change to a calendar object resource containing an inline
4256 attachment requires the entire inline attachment to be re-
4262 <span class=
"grey">Daboo, et al. Standards Track [Page
74]
</span>
4263 </pre><pre class=
"newpage"><a name=
"page-75" id=
"page-75" href=
"#page-75" class=
"invisible"> </a>
4264 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4267 o Clients synchronizing a changed calendar object resource have to
4268 download the entire calendar object resource, even if the
4269 attachment is unchanged.
4271 <span class=
"h4"><h4><a name=
"section-8.5.2">8.5.2</a>. External Attachments
</h4></span>
4273 CalDAV clients SHOULD support downloading of external attachments
4274 referenced by arbitrary URI schemes, by either processing them
4275 directly, or by passing the attachment URI to a suitable
"helper
4276 application" for processing, if such an application exists. CalDAV
4277 clients MUST support downloading of external attachments referenced
4278 by the
"http" or
"https" URI schemes. An external attachment could
4281 o In a collection in the calendar collection containing the calendar
4284 o Somewhere else in the same repository that hosts the calendar
4287 o On an HTTP or FTP server elsewhere.
4289 CalDAV servers MAY provide support for child collections in calendar
4290 collections. CalDAV servers MAY allow the MKCOL method to create
4291 child collections in calendar collections. Child collections of
4292 calendar collections MAY contain any type of resource except calendar
4293 collections that they MUST NOT contain. Some CalDAV servers won't
4294 allow child collections in calendar collections, and it may be
4295 possible on such a server to discover other locations where
4296 attachments can be stored.
4298 Clients are entirely responsible for maintaining reference
4299 consistency with calendar components that link to external
4300 attachments. A client deleting a calendar component with an external
4301 attachment might therefore also delete the attachment if that's
4302 appropriate; however, appropriateness can be very hard to determine.
4303 A new component might easily reference some pre-existing Web resource
4304 that is intended to have independent existence from the calendar
4305 component (the
"attachment" could be a major proposal to be discussed
4306 in a meeting, for instance). Best practices will probably emerge and
4307 should probably be documented, but for now, clients should be wary of
4308 engaging in aggressive
"cleanup" of external attachments. A client
4309 could involve the user in making decisions about removing
4310 unreferenced documents, or a client could be conservative in only
4311 deleting attachments it had created.
4313 Also, clients are responsible for consistency of permissions when
4314 using external attachments. One reason for servers to support the
4318 <span class=
"grey">Daboo, et al. Standards Track [Page
75]
</span>
4319 </pre><pre class=
"newpage"><a name=
"page-76" id=
"page-76" href=
"#page-76" class=
"invisible"> </a>
4320 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4323 storage of attachments within child collections of calendar
4324 collections is that ACL inheritance might make it easier to grant the
4325 same permissions to attachments that are granted on the calendar
4326 collection. Otherwise, it can be very difficult to keep permissions
4327 synchronized. With attachments stored on separate repositories, it
4328 can be impossible to keep permissions consistent -- the two
4329 repositories may not support the same permissions or have the same
4330 set of principals. Some systems have used tickets or other anonymous
4331 access control mechanisms to provide partially satisfactory solutions
4332 to these kinds of problems.
4334 <span class=
"h3"><h3><a name=
"section-8.6">8.6</a>. Storing and Using Alarms
</h3></span>
4336 Note that all CalDAV calendar collections (including those the user
4337 might treat as public or group calendars) can contain alarm
4338 information on events and to-dos. Users can synchronize a calendar
4339 between multiple devices and decide to have alarms execute on a
4340 different device than the device that created the alarm. Not all
4341 alarm action types are completely interoperable (e.g., those that
4342 name a sound file to play).
4344 When the action is AUDIO and the client is configured to execute
4345 the alarm, the client SHOULD play the suggested sound if it's
4346 available or play another sound, but SHOULD NOT rewrite the alarm
4347 just to replace the suggested sound with a sound that's locally
4350 When the action is DISPLAY and the client is configured to execute
4351 the alarm, the client SHOULD execute a display alarm by displaying
4352 according to the suggested description or some reasonable
4353 replacement, but SHOULD NOT rewrite the alarm for its own
4356 When the action is EMAIL and the client is incapable of sending
4357 email, it SHOULD ignore the alarm, but it MUST continue to
4358 synchronize the alarm itself.
4360 This specification makes no recommendations about executing alarms
4361 of type PROCEDURE, except to note that clients are advised to take
4362 care to avoid creating security holes by executing these.
4364 Non-interoperable alarm information (e.g., should somebody define a
4365 color to be used in a display alarm) should be put in non-standard
4366 properties inside the VALARM component in order to keep the basic
4367 alarm usable on all devices.
4369 Clients that allow changes to calendar object resources MUST
4370 synchronize the alarm data that already exists in the resources.
4374 <span class=
"grey">Daboo, et al. Standards Track [Page
76]
</span>
4375 </pre><pre class=
"newpage"><a name=
"page-77" id=
"page-77" href=
"#page-77" class=
"invisible"> </a>
4376 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4379 Clients MAY execute alarms that are downloaded in this fashion,
4380 possibly based on user preference. If a client is only doing read
4381 operations on a calendar and there is no risk of losing alarm
4382 information, then the client MAY discard alarm information.
4384 This specification makes no attempt to provide multi-user alarms on
4385 group calendars or to find out for whom an alarm is intended.
4386 Addressing those issues might require extensions to iCalendar; for
4387 example, to store alarms per-user, or to indicate for which user a
4388 VALARM was intended. In the meantime, clients might maximize
4389 interoperability by generally not uploading alarm information to
4390 public, group, or resource calendars.
4392 <span class=
"h2"><h2><a name=
"section-9">9</a>. XML Element Definitions
</h2></span>
4394 <span class=
"h3"><h3><a name=
"section-9.1">9.1</a>. CALDAV:calendar XML Element
</h3></span>
4398 Namespace: urn:ietf:params:xml:ns:caldav
4400 Purpose: Specifies the resource type of a calendar collection.
4402 Description: See
<a href=
"#section-4.2">Section
4.2</a>.
4406 <!ELEMENT calendar EMPTY
>
4408 <span class=
"h3"><h3><a name=
"section-9.2">9.2</a>. CALDAV:mkcalendar XML Element
</h3></span>
4412 Namespace: urn:ietf:params:xml:ns:caldav
4414 Purpose: Specifies a request that includes the WebDAV property
4415 values to be set for a calendar collection resource when it is
4418 Description: See
<a href=
"#section-5.3.1">Section
5.3.1</a>.
4422 <!ELEMENT mkcalendar (DAV:set)
>
4430 <span class=
"grey">Daboo, et al. Standards Track [Page
77]
</span>
4431 </pre><pre class=
"newpage"><a name=
"page-78" id=
"page-78" href=
"#page-78" class=
"invisible"> </a>
4432 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4435 <span class=
"h3"><h3><a name=
"section-9.3">9.3</a>. CALDAV:mkcalendar-response XML Element
</h3></span>
4437 Name: mkcalendar-response
4439 Namespace: urn:ietf:params:xml:ns:caldav
4441 Purpose: Specifies a response body for a successful MKCALENDAR
4444 Description: See
<a href=
"#section-5.3.1">Section
5.3.1</a>.
4448 <!ELEMENT mkcalendar-response ANY
>
4450 <span class=
"h3"><h3><a name=
"section-9.4">9.4</a>. CALDAV:supported-collation XML Element
</h3></span>
4452 Name: supported-collation
4454 Namespace: urn:ietf:params:xml:ns:caldav
4456 Purpose: Identifies a single collation via its collation identifier,
4457 as defined by [
<a href=
"http://tools.ietf.org/html/rfc4790" title=
""Internet Application Protocol Collation Registry"">RFC4790
</a>].
4459 Description: The CALDAV:supported-collation contains the text of a
4460 collation identifier, as described in
<a href=
"#section-7.5.1">Section
7.5.1</a>.
4464 <!ELEMENT supported-collation (#PCDATA)
>
4465 PCDATA value: collation identifier
4467 <span class=
"h3"><h3><a name=
"section-9.5">9.5</a>. CALDAV:calendar-query XML Element
</h3></span>
4469 Name: calendar-query
4471 Namespace: urn:ietf:params:xml:ns:caldav
4473 Purpose: Defines a report for querying calendar object resources.
4475 Description: See
<a href=
"#section-7.8">Section
7.8</a>.
4479 <!ELEMENT calendar-query ((DAV:allprop |
4481 DAV:prop)?, filter, timezone?)
>
4486 <span class=
"grey">Daboo, et al. Standards Track [Page
78]
</span>
4487 </pre><pre class=
"newpage"><a name=
"page-79" id=
"page-79" href=
"#page-79" class=
"invisible"> </a>
4488 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4491 <span class=
"h3"><h3><a name=
"section-9.6">9.6</a>. CALDAV:calendar-data XML Element
</h3></span>
4495 Namespace: urn:ietf:params:xml:ns:caldav
4497 Purpose: Specified one of the following:
4499 1. A supported media type for calendar object resources when
4500 nested in the CALDAV:supported-calendar-data property;
4502 2. The parts of a calendar object resource should be returned by
4503 a calendaring report;
4505 3. The content of a calendar object resource in a response to a
4508 Description: When nested in the CALDAV:supported-calendar-data
4509 property, the CALDAV:calendar-data XML element specifies a media
4510 type supported by the CalDAV server for calendar object resources.
4512 When used in a calendaring REPORT request, the CALDAV:calendar-
4513 data XML element specifies which parts of calendar object
4514 resources need to be returned in the response. If the CALDAV:
4515 calendar-data XML element doesn't contain any CALDAV:comp element,
4516 calendar object resources will be returned in their entirety.
4518 Finally, when used in a calendaring REPORT response, the CALDAV:
4519 calendar-data XML element specifies the content of a calendar
4520 object resource. Given that XML parsers normalize the two-
4521 character sequence CRLF (US-ASCII decimal
13 and US-ASCII decimal
4522 10) to a single LF character (US-ASCII decimal
10), the CR
4523 character (US-ASCII decimal
13) MAY be omitted in calendar object
4524 resources specified in the CALDAV:calendar-data XML element.
4525 Furthermore, calendar object resources specified in the CALDAV:
4526 calendar-data XML element MAY be invalid per their media type
4527 specification if the CALDAV:calendar-data XML element part of the
4528 calendaring REPORT request did not specify required properties
4529 (e.g., UID, DTSTAMP, etc.), or specified a CALDAV:prop XML element
4530 with the
"novalue" attribute set to
"yes".
4532 Note: The CALDAV:calendar-data XML element is specified in requests
4533 and responses inside the DAV:prop XML element as if it were a
4534 WebDAV property. However, the CALDAV:calendar-data XML element is
4535 not a WebDAV property and, as such, is not returned in PROPFIND
4536 responses, nor used in PROPPATCH requests.
4542 <span class=
"grey">Daboo, et al. Standards Track [Page
79]
</span>
4543 </pre><pre class=
"newpage"><a name=
"page-80" id=
"page-80" href=
"#page-80" class=
"invisible"> </a>
4544 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4547 Note: The iCalendar data embedded within the CALDAV:calendar-data
4548 XML element MUST follow the standard XML character data encoding
4549 rules, including use of
&lt;,
&gt;,
&amp; etc. entity encoding or
4550 the use of a
<![CDATA[ ... ]]
> construct. In the later case, the
4551 iCalendar data cannot contain the character sequence
"]]>", which
4552 is the end delimiter for the CDATA section.
4556 <!ELEMENT calendar-data EMPTY
>
4558 when nested in the CALDAV:supported-calendar-data property
4559 to specify a supported media type for calendar object
4562 <!ELEMENT calendar-data (comp?,
4563 (expand | limit-recurrence-set)?,
4564 limit-freebusy-set?)
>
4566 when nested in the DAV:prop XML element in a calendaring
4567 REPORT request to specify which parts of calendar object
4568 resources should be returned in the response;
4570 <!ELEMENT calendar-data (#PCDATA)
>
4571 PCDATA value: iCalendar object
4573 when nested in the DAV:prop XML element in a calendaring
4574 REPORT response to specify the content of a returned
4575 calendar object resource.
4577 <!ATTLIST calendar-data content-type CDATA
"text/calendar"
4578 version CDATA
"2.0">
4579 content-type value: a MIME media type
4580 version value: a version string
4582 attributes can be used on all three variants of the
4583 CALDAV:calendar-data XML element.
4585 <span class=
"h4"><h4><a name=
"section-9.6.1">9.6.1</a>. CALDAV:comp XML Element
</h4></span>
4589 Namespace: urn:ietf:params:xml:ns:caldav
4591 Purpose: Defines which component types to return.
4598 <span class=
"grey">Daboo, et al. Standards Track [Page
80]
</span>
4599 </pre><pre class=
"newpage"><a name=
"page-81" id=
"page-81" href=
"#page-81" class=
"invisible"> </a>
4600 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4603 Description: The name value is a calendar component name (e.g.,
4608 <!ELEMENT comp ((allprop | prop*), (allcomp | comp*))
>
4610 <!ATTLIST comp name CDATA #REQUIRED
>
4611 name value: a calendar component name
4613 Note: The CALDAV:prop and CALDAV:allprop elements have the same name
4614 as the DAV:prop and DAV:allprop elements defined in [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>].
4615 However, the CALDAV:prop and CALDAV:allprop elements are defined
4616 in the
"urn:ietf:params:xml:ns:caldav" namespace instead of the
4619 <span class=
"h4"><h4><a name=
"section-9.6.2">9.6.2</a>. CALDAV:allcomp XML Element
</h4></span>
4623 Namespace: urn:ietf:params:xml:ns:caldav
4625 Purpose: Specifies that all components shall be returned.
4627 Description: The CALDAV:allcomp XML element can be used when the
4628 client wants all types of components returned by a calendaring
4633 <!ELEMENT allcomp EMPTY
>
4635 <span class=
"h4"><h4><a name=
"section-9.6.3">9.6.3</a>. CALDAV:allprop XML Element
</h4></span>
4639 Namespace: urn:ietf:params:xml:ns:caldav
4641 Purpose: Specifies that all properties shall be returned.
4643 Description: The CALDAV:allprop XML element can be used when the
4644 client wants all properties of components returned by a
4645 calendaring REPORT request.
4649 <!ELEMENT allprop EMPTY
>
4654 <span class=
"grey">Daboo, et al. Standards Track [Page
81]
</span>
4655 </pre><pre class=
"newpage"><a name=
"page-82" id=
"page-82" href=
"#page-82" class=
"invisible"> </a>
4656 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4659 Note: The CALDAV:allprop element has the same name as the DAV:
4660 allprop element defined in [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]. However, the CALDAV:allprop
4661 element is defined in the
"urn:ietf:params:xml:ns:caldav"
4662 namespace instead of the
"DAV:" namespace.
4664 <span class=
"h4"><h4><a name=
"section-9.6.4">9.6.4</a>. CALDAV:prop XML Element
</h4></span>
4668 Namespace: urn:ietf:params:xml:ns:caldav
4670 Purpose: Defines which properties to return in the response.
4672 Description: The
"name" attribute specifies the name of the calendar
4673 property to return (e.g., ATTENDEE). The
"novalue" attribute can
4674 be used by clients to request that the actual value of the
4675 property not be returned (if the
"novalue" attribute is set to
4676 "yes"). In that case, the server will return just the iCalendar
4677 property name and any iCalendar parameters and a trailing
":"
4678 without the subsequent value data.
4682 <!ELEMENT prop EMPTY
>
4684 <!ATTLIST prop name CDATA #REQUIRED
4685 novalue (yes | no)
"no">
4686 name value: a calendar property name
4687 novalue value:
"yes" or
"no"
4689 Note: The CALDAV:prop element has the same name as the DAV:prop
4690 element defined in [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>]. However, the CALDAV:prop element is
4691 defined in the
"urn:ietf:params:xml:ns:caldav" namespace instead
4692 of the
"DAV:" namespace.
4694 <span class=
"h4"><h4><a name=
"section-9.6.5">9.6.5</a>. CALDAV:expand XML Element
</h4></span>
4698 Namespace: urn:ietf:params:xml:ns:caldav
4700 Purpose: Forces the server to expand recurring components into
4701 individual recurrence instances.
4703 Description: The CALDAV:expand XML element specifies that for a
4704 given calendaring REPORT request, the server MUST expand the
4705 recurrence set into calendar components that define exactly one
4710 <span class=
"grey">Daboo, et al. Standards Track [Page
82]
</span>
4711 </pre><pre class=
"newpage"><a name=
"page-83" id=
"page-83" href=
"#page-83" class=
"invisible"> </a>
4712 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4715 recurrence instance, and MUST return only those whose scheduled
4716 time intersect a specified time range.
4718 The
"start" attribute specifies the inclusive start of the time
4719 range, and the
"end" attribute specifies the non-inclusive end of
4720 the time range. Both attributes are specified as date with UTC
4721 time value. The value of the
"end" attribute MUST be greater than
4722 the value of the
"start" attribute.
4724 The server MUST use the same logic as defined for CALDAV:time-
4725 range to determine if a recurrence instance intersects the
4726 specified time range.
4728 Recurring components, other than the initial instance, MUST
4729 include a RECURRENCE-ID property indicating which instance they
4732 The returned calendar components MUST NOT use recurrence
4733 properties (i.e., EXDATE, EXRULE, RDATE, and RRULE) and MUST NOT
4734 have reference to or include VTIMEZONE components. Date and local
4735 time with reference to time zone information MUST be converted
4736 into date with UTC time.
4740 <!ELEMENT expand EMPTY
>
4742 <!ATTLIST expand start CDATA #REQUIRED
4743 end CDATA #REQUIRED
>
4744 start value: an iCalendar
"date with UTC time"
4745 end value: an iCalendar
"date with UTC time"
4747 <span class=
"h4"><h4><a name=
"section-9.6.6">9.6.6</a>. CALDAV:limit-recurrence-set XML Element
</h4></span>
4749 Name: limit-recurrence-set
4751 Namespace: urn:ietf:params:xml:ns:caldav
4753 Purpose: Specifies a time range to limit the set of
"overridden
4754 components" returned by the server.
4756 Description: The CALDAV:limit-recurrence-set XML element specifies
4757 that for a given calendaring REPORT request, the server MUST
4758 return, in addition to the
"master component", only the
4759 "overridden components" that impact a specified time range. An
4760 overridden component impacts a time range if its current start and
4761 end times overlap the time range, or if the original start and end
4766 <span class=
"grey">Daboo, et al. Standards Track [Page
83]
</span>
4767 </pre><pre class=
"newpage"><a name=
"page-84" id=
"page-84" href=
"#page-84" class=
"invisible"> </a>
4768 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4771 times -- the ones that would have been used if the instance were
4772 not overridden -- overlap the time range.
4774 The
"start" attribute specifies the inclusive start of the time
4775 range, and the
"end" attribute specifies the non-inclusive end of
4776 the time range. Both attributes are specified as date with UTC
4777 time value. The value of the
"end" attribute MUST be greater than
4778 the value of the
"start" attribute.
4780 The server MUST use the same logic as defined for CALDAV:time-
4781 range to determine if the current or original scheduled time of an
4782 "overridden" recurrence instance intersects the specified time
4785 Overridden components that have a RANGE parameter on their
4786 RECURRENCE-ID property may specify one or more instances in the
4787 recurrence set, and some of those instances may fall within the
4788 specified time range or may have originally fallen within the
4789 specified time range prior to being overridden. If that is the
4790 case, the overridden component MUST be included in the results, as
4791 it has a direct impact on the interpretation of instances within
4792 the specified time range.
4796 <!ELEMENT limit-recurrence-set EMPTY
>
4798 <!ATTLIST limit-recurrence-set start CDATA #REQUIRED
4799 end CDATA #REQUIRED
>
4800 start value: an iCalendar
"date with UTC time"
4801 end value: an iCalendar
"date with UTC time"
4803 <span class=
"h4"><h4><a name=
"section-9.6.7">9.6.7</a>. CALDAV:limit-freebusy-set XML Element
</h4></span>
4805 Name: limit-freebusy-set
4807 Namespace: urn:ietf:params:xml:ns:caldav
4809 Purpose: Specifies a time range to limit the set of FREEBUSY values
4810 returned by the server.
4812 Description: The CALDAV:limit-freebusy-set XML element specifies
4813 that for a given calendaring REPORT request, the server MUST only
4814 return the FREEBUSY property values of a VFREEBUSY component that
4815 intersects a specified time range.
4817 The
"start" attribute specifies the inclusive start of the time
4818 range, and the
"end" attribute specifies the non-inclusive end of
4822 <span class=
"grey">Daboo, et al. Standards Track [Page
84]
</span>
4823 </pre><pre class=
"newpage"><a name=
"page-85" id=
"page-85" href=
"#page-85" class=
"invisible"> </a>
4824 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4827 the time range. Both attributes are specified as
"date with UTC
4828 time" value. The value of the
"end" attribute MUST be greater
4829 than the value of the
"start" attribute.
4831 The server MUST use the same logic as defined for CALDAV:time-
4832 range to determine if a FREEBUSY property value intersects the
4833 specified time range.
4837 <!ELEMENT limit-freebusy-set EMPTY
>
4839 <!ATTLIST limit-freebusy-set start CDATA #REQUIRED
4840 end CDATA #REQUIRED
>
4841 start value: an iCalendar
"date with UTC time"
4842 end value: an iCalendar
"date with UTC time"
4844 <span class=
"h3"><h3><a name=
"section-9.7">9.7</a>. CALDAV:filter XML Element
</h3></span>
4848 Namespace: urn:ietf:params:xml:ns:caldav
4850 Purpose: Specifies a filter to limit the set of calendar components
4851 returned by the server.
4853 Description: The CALDAV:filter XML element specifies the search
4854 filter used to limit the calendar components returned by a
4855 calendaring REPORT request.
4859 <!ELEMENT filter (comp-filter)
>
4861 <span class=
"h4"><h4><a name=
"section-9.7.1">9.7.1</a>. CALDAV:comp-filter XML Element
</h4></span>
4865 Namespace: urn:ietf:params:xml:ns:caldav
4867 Purpose: Specifies search criteria on calendar components.
4869 Description: The CALDAV:comp-filter XML element specifies a query
4870 targeted at the calendar object (i.e., VCALENDAR) or at a specific
4871 calendar component type (e.g., VEVENT). The scope of the
4872 CALDAV:comp-filter XML element is the calendar object when used as
4873 a child of the CALDAV:filter XML element. The scope of the
4874 CALDAV:comp-filter XML element is the enclosing calendar component
4878 <span class=
"grey">Daboo, et al. Standards Track [Page
85]
</span>
4879 </pre><pre class=
"newpage"><a name=
"page-86" id=
"page-86" href=
"#page-86" class=
"invisible"> </a>
4880 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4883 when used as a child of another CALDAV:comp-filter XML element. A
4884 CALDAV:comp-filter is said to match if:
4886 * The CALDAV:comp-filter XML element is empty and the calendar
4887 object or calendar component type specified by the
"name"
4888 attribute exists in the current scope;
4892 * The CALDAV:comp-filter XML element contains a CALDAV:is-not-
4893 defined XML element and the calendar object or calendar
4894 component type specified by the
"name" attribute does not exist
4895 in the current scope;
4899 * The CALDAV:comp-filter XML element contains a CALDAV:time-range
4900 XML element and at least one recurrence instance in the
4901 targeted calendar component is scheduled to overlap the
4902 specified time range, and all specified CALDAV:prop-filter and
4903 CALDAV:comp-filter child XML elements also match the targeted
4908 * The CALDAV:comp-filter XML element only contains CALDAV:prop-
4909 filter and CALDAV:comp-filter child XML elements that all match
4910 the targeted calendar component.
4914 <!ELEMENT comp-filter (is-not-defined | (time-range?,
4915 prop-filter*, comp-filter*))
>
4917 <!ATTLIST comp-filter name CDATA #REQUIRED
>
4918 name value: a calendar object or calendar component
4921 <span class=
"h4"><h4><a name=
"section-9.7.2">9.7.2</a>. CALDAV:prop-filter XML Element
</h4></span>
4925 Namespace: urn:ietf:params:xml:ns:caldav
4927 Purpose: Specifies search criteria on calendar properties.
4929 Description: The CALDAV:prop-filter XML element specifies a query
4930 targeted at a specific calendar property (e.g., CATEGORIES) in the
4934 <span class=
"grey">Daboo, et al. Standards Track [Page
86]
</span>
4935 </pre><pre class=
"newpage"><a name=
"page-87" id=
"page-87" href=
"#page-87" class=
"invisible"> </a>
4936 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4939 scope of the enclosing calendar component. A calendar property is
4940 said to match a CALDAV:prop-filter if:
4942 * The CALDAV:prop-filter XML element is empty and a property of
4943 the type specified by the
"name" attribute exists in the
4944 enclosing calendar component;
4948 * The CALDAV:prop-filter XML element contains a CALDAV:is-not-
4949 defined XML element and no property of the type specified by
4950 the
"name" attribute exists in the enclosing calendar
4955 * The CALDAV:prop-filter XML element contains a CALDAV:time-range
4956 XML element and the property value overlaps the specified time
4957 range, and all specified CALDAV:param-filter child XML elements
4958 also match the targeted property;
4962 * The CALDAV:prop-filter XML element contains a CALDAV:text-match
4963 XML element and the property value matches it, and all
4964 specified CALDAV:param-filter child XML elements also match the
4969 <!ELEMENT prop-filter (is-not-defined |
4970 ((time-range | text-match)?,
4973 <!ATTLIST prop-filter name CDATA #REQUIRED
>
4974 name value: a calendar property name (e.g., ATTENDEE)
4976 <span class=
"h4"><h4><a name=
"section-9.7.3">9.7.3</a>. CALDAV:param-filter XML Element
</h4></span>
4980 Namespace: urn:ietf:params:xml:ns:caldav
4982 Purpose: Limits the search to specific parameter values.
4984 Description: The CALDAV:param-filter XML element specifies a query
4985 targeted at a specific calendar property parameter (e.g.,
4986 PARTSTAT) in the scope of the calendar property on which it is
4990 <span class=
"grey">Daboo, et al. Standards Track [Page
87]
</span>
4991 </pre><pre class=
"newpage"><a name=
"page-88" id=
"page-88" href=
"#page-88" class=
"invisible"> </a>
4992 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
4995 defined. A calendar property parameter is said to match a CALDAV:
4998 * The CALDAV:param-filter XML element is empty and a parameter of
4999 the type specified by the
"name" attribute exists on the
5000 calendar property being examined;
5004 * The CALDAV:param-filter XML element contains a CALDAV:is-not-
5005 defined XML element and no parameter of the type specified by
5006 the
"name" attribute exists on the calendar property being
5011 <!ELEMENT param-filter (is-not-defined | text-match?)
>
5013 <!ATTLIST param-filter name CDATA #REQUIRED
>
5014 name value: a property parameter name (e.g., PARTSTAT)
5016 <span class=
"h4"><h4><a name=
"section-9.7.4">9.7.4</a>. CALDAV:is-not-defined XML Element
</h4></span>
5018 Name: is-not-defined
5020 Namespace: urn:ietf:params:xml:ns:caldav
5022 Purpose: Specifies that a match should occur if the enclosing
5023 component, property, or parameter does not exist.
5025 Description: The CALDAV:is-not-defined XML element specifies that a
5026 match occurs if the enclosing component, property, or parameter
5027 value specified in a calendaring REPORT request does not exist in
5028 the calendar data being tested.
5032 <!ELEMENT is-not-defined EMPTY
>
5034 <span class=
"h4"><h4><a name=
"section-9.7.5">9.7.5</a>. CALDAV:text-match XML Element
</h4></span>
5038 Namespace: urn:ietf:params:xml:ns:caldav
5040 Purpose: Specifies a substring match on a property or parameter
5046 <span class=
"grey">Daboo, et al. Standards Track [Page
88]
</span>
5047 </pre><pre class=
"newpage"><a name=
"page-89" id=
"page-89" href=
"#page-89" class=
"invisible"> </a>
5048 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5051 Description: The CALDAV:text-match XML element specifies text used
5052 for a substring match against the property or parameter value
5053 specified in a calendaring REPORT request.
5055 The
"collation" attribute is used to select the collation that the
5056 server MUST use for character string matching. In the absence of
5057 this attribute, the server MUST use the
"i;ascii-casemap"
5060 The
"negate-condition" attribute is used to indicate that this
5061 test returns a match if the text matches when the attribute value
5062 is set to
"no", or return a match if the text does not match, if
5063 the attribute value is set to
"yes". For example, this can be
5064 used to match components with a STATUS property not set to
5069 <!ELEMENT text-match (#PCDATA)
>
5070 PCDATA value: string
5072 <!ATTLIST text-match collation CDATA
"i;ascii-casemap"
5073 negate-condition (yes | no)
"no">
5075 <span class=
"h3"><h3><a name=
"section-9.8">9.8</a>. CALDAV:timezone XML Element
</h3></span>
5079 Namespace: urn:ietf:params:xml:ns:caldav
5081 Purpose: Specifies the time zone component to use when determining
5082 the results of a report.
5084 Description: The CALDAV:timezone XML element specifies that for a
5085 given calendaring REPORT request, the server MUST rely on the
5086 specified VTIMEZONE component instead of the CALDAV:calendar-
5087 timezone property of the calendar collection, in which the
5088 calendar object resource is contained to resolve
"date" values and
5089 "date with local time" values (i.e., floating time) to
"date with
5090 UTC time" values. The server will require this information to
5091 determine if a calendar component scheduled with
"date" values or
5092 "date with local time" values intersects a CALDAV:time-range
5093 specified in a CALDAV:calendar-query REPORT.
5095 Note: The iCalendar data embedded within the CALDAV:timezone XML
5096 element MUST follow the standard XML character data encoding
5097 rules, including use of
&lt;,
&gt;,
&amp; etc. entity encoding or
5098 the use of a
<![CDATA[ ... ]]
> construct. In the later case, the
5102 <span class=
"grey">Daboo, et al. Standards Track [Page
89]
</span>
5103 </pre><pre class=
"newpage"><a name=
"page-90" id=
"page-90" href=
"#page-90" class=
"invisible"> </a>
5104 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5107 iCalendar data cannot contain the character sequence
"]]>", which
5108 is the end delimiter for the CDATA section.
5112 <!ELEMENT timezone (#PCDATA)
>
5113 PCDATA value: an iCalendar object with exactly one VTIMEZONE
5115 <span class=
"h3"><h3><a name=
"section-9.9">9.9</a>. CALDAV:time-range XML Element
</h3></span>
5119 Namespace: urn:ietf:params:xml:ns:caldav
5121 Purpose: Specifies a time range to limit the set of calendar
5122 components returned by the server.
5124 Description: The CALDAV:time-range XML element specifies that for a
5125 given calendaring REPORT request, the server MUST only return the
5126 calendar object resources that, depending on the context, have a
5127 component or property whose value intersects a specified time
5130 The
"start" attribute specifies the inclusive start of the time
5131 range, and the
"end" attribute specifies the non-inclusive end of
5132 the time range. Both attributes MUST be specified as
"date with
5133 UTC time" value. Time ranges open at one end can be specified by
5134 including only one attribute; however, at least one attribute MUST
5135 always be present in the CALDAV:time-range element. If either the
5136 "start" or
"end" attribute is not specified in the CALDAV:time-
5137 range XML element, assume
"-infinity" and
"+infinity" as their
5138 value, respectively. If both
"start" and
"end" are present, the
5139 value of the
"end" attribute MUST be greater than the value of the
5142 Time range tests MUST consider every recurrence instance when
5143 testing the time range condition; if any one instance matches,
5144 then the test returns true. Testing recurrence instances requires
5145 the server to infer an effective value for DTSTART, DTEND,
5146 DURATION, and DUE properties for an instance based on the
5147 recurrence patterns and any overrides.
5149 A VEVENT component overlaps a given time range if the condition
5150 for the corresponding component state specified in the table below
5151 is satisfied. Note that, as specified in [
<a href=
"http://tools.ietf.org/html/rfc2445" title=
""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445
</a>], the DTSTART
5152 property is REQUIRED in the VEVENT component. The conditions
5153 depend on the presence of the DTEND and DURATION properties in the
5154 VEVENT component. Furthermore, the value of the DTEND property
5158 <span class=
"grey">Daboo, et al. Standards Track [Page
90]
</span>
5159 </pre><pre class=
"newpage"><a name=
"page-91" id=
"page-91" href=
"#page-91" class=
"invisible"> </a>
5160 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5163 MUST be later in time than the value of the DTSTART property. The
5164 duration of a VEVENT component with no DTEND and DURATION
5165 properties is
1 day (+P1D) when the DTSTART is a DATE value, and
0
5166 seconds when the DTSTART is a DATE-TIME value.
5168 +---------------------------------------------------------------+
5169 | VEVENT has the DTEND property? |
5170 | +-----------------------------------------------------------+
5171 | | VEVENT has the DURATION property? |
5172 | | +-------------------------------------------------------+
5173 | | | DURATION property value is greater than
0 seconds? |
5174 | | | +---------------------------------------------------+
5175 | | | | DTSTART property is a DATE-TIME value? |
5176 | | | | +-----------------------------------------------+
5177 | | | | | Condition to evaluate |
5178 +---+---+---+---+-----------------------------------------------+
5179 | Y | N | N | * | (start
< DTEND AND end
> DTSTART) |
5180 +---+---+---+---+-----------------------------------------------+
5181 | N | Y | Y | * | (start
< DTSTART+DURATION AND end
> DTSTART) |
5182 | | +---+---+-----------------------------------------------+
5183 | | | N | * | (start
<= DTSTART AND end
> DTSTART) |
5184 +---+---+---+---+-----------------------------------------------+
5185 | N | N | N | Y | (start
<= DTSTART AND end
> DTSTART) |
5186 +---+---+---+---+-----------------------------------------------+
5187 | N | N | N | N | (start
< DTSTART+P1D AND end
> DTSTART) |
5188 +---+---+---+---+-----------------------------------------------+
5190 A VTODO component is said to overlap a given time range if the
5191 condition for the corresponding component state specified in the
5192 table below is satisfied. The conditions depend on the presence
5193 of the DTSTART, DURATION, DUE, COMPLETED, and CREATED properties
5194 in the VTODO component. Note that, as specified in [
<a href=
"http://tools.ietf.org/html/rfc2445" title=
""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445
</a>], the
5195 DUE value MUST be a DATE-TIME value equal to or after the DTSTART
5214 <span class=
"grey">Daboo, et al. Standards Track [Page
91]
</span>
5215 </pre><pre class=
"newpage"><a name=
"page-92" id=
"page-92" href=
"#page-92" class=
"invisible"> </a>
5216 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5219 +-------------------------------------------------------------------+
5220 | VTODO has the DTSTART property? |
5221 | +---------------------------------------------------------------+
5222 | | VTODO has the DURATION property? |
5223 | | +-----------------------------------------------------------+
5224 | | | VTODO has the DUE property? |
5225 | | | +-------------------------------------------------------+
5226 | | | | VTODO has the COMPLETED property? |
5227 | | | | +---------------------------------------------------+
5228 | | | | | VTODO has the CREATED property? |
5229 | | | | | +-----------------------------------------------+
5230 | | | | | | Condition to evaluate |
5231 +---+---+---+---+---+-----------------------------------------------+
5232 | Y | Y | N | * | * | (start
<= DTSTART+DURATION) AND |
5233 | | | | | | ((end
> DTSTART) OR |
5234 | | | | | | (end
>= DTSTART+DURATION)) |
5235 +---+---+---+---+---+-----------------------------------------------+
5236 | Y | N | Y | * | * | ((start
< DUE) OR (start
<= DTSTART)) |
5238 | | | | | | ((end
> DTSTART) OR (end
>= DUE)) |
5239 +---+---+---+---+---+-----------------------------------------------+
5240 | Y | N | N | * | * | (start
<= DTSTART) AND (end
> DTSTART) |
5241 +---+---+---+---+---+-----------------------------------------------+
5242 | N | N | Y | * | * | (start
< DUE) AND (end
>= DUE) |
5243 +---+---+---+---+---+-----------------------------------------------+
5244 | N | N | N | Y | Y | ((start
<= CREATED) OR (start
<= COMPLETED))|
5246 | | | | | | ((end
>= CREATED) OR (end
>= COMPLETED))|
5247 +---+---+---+---+---+-----------------------------------------------+
5248 | N | N | N | Y | N | (start
<= COMPLETED) AND (end
>= COMPLETED) |
5249 +---+---+---+---+---+-----------------------------------------------+
5250 | N | N | N | N | Y | (end
> CREATED) |
5251 +---+---+---+---+---+-----------------------------------------------+
5252 | N | N | N | N | N | TRUE |
5253 +---+---+---+---+---+-----------------------------------------------+
5255 A VJOURNAL component overlaps a given time range if the condition
5256 for the corresponding component state specified in the table below
5257 is satisfied. The conditions depend on the presence of the
5258 DTSTART property in the VJOURNAL component and on whether the
5259 DTSTART is a DATE-TIME or DATE value. The effective
"duration" of
5260 a VJOURNAL component is
1 day (+P1D) when the DTSTART is a DATE
5261 value, and
0 seconds when the DTSTART is a DATE-TIME value.
5270 <span class=
"grey">Daboo, et al. Standards Track [Page
92]
</span>
5271 </pre><pre class=
"newpage"><a name=
"page-93" id=
"page-93" href=
"#page-93" class=
"invisible"> </a>
5272 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5275 +----------------------------------------------------+
5276 | VJOURNAL has the DTSTART property? |
5277 | +------------------------------------------------+
5278 | | DTSTART property is a DATE-TIME value? |
5279 | | +--------------------------------------------+
5280 | | | Condition to evaluate |
5281 +---+---+--------------------------------------------+
5282 | Y | Y | (start
<= DTSTART) AND (end
> DTSTART) |
5283 +---+---+--------------------------------------------+
5284 | Y | N | (start
< DTSTART+P1D) AND (end
> DTSTART) |
5285 +---+---+--------------------------------------------+
5287 +---+---+--------------------------------------------+
5289 A VFREEBUSY component overlaps a given time range if the condition
5290 for the corresponding component state specified in the table below
5291 is satisfied. The conditions depend on the presence in the
5292 VFREEBUSY component of the DTSTART and DTEND properties, and any
5293 FREEBUSY properties in the absence of DTSTART and DTEND. Any
5294 DURATION property is ignored, as it has a special meaning when
5295 used in a VFREEBUSY component.
5297 When only FREEBUSY properties are used, each period in each
5298 FREEBUSY property is compared against the time range, irrespective
5299 of the type of free busy information (free, busy, busy-tentative,
5300 busy-unavailable) represented by the property.
5303 +------------------------------------------------------+
5304 | VFREEBUSY has both the DTSTART and DTEND properties? |
5305 | +--------------------------------------------------+
5306 | | VFREEBUSY has the FREEBUSY property? |
5307 | | +----------------------------------------------+
5308 | | | Condition to evaluate |
5309 +---+---+----------------------------------------------+
5310 | Y | * | (start
<= DTEND) AND (end
> DTSTART) |
5311 +---+---+----------------------------------------------+
5312 | N | Y | (start
< freebusy-period-end) AND |
5313 | | | (end
> freebusy-period-start) |
5314 +---+---+----------------------------------------------+
5316 +---+---+----------------------------------------------+
5318 A VALARM component is said to overlap a given time range if the
5319 following condition holds:
5321 (start
<= trigger-time) AND (end
> trigger-time)
5326 <span class=
"grey">Daboo, et al. Standards Track [Page
93]
</span>
5327 </pre><pre class=
"newpage"><a name=
"page-94" id=
"page-94" href=
"#page-94" class=
"invisible"> </a>
5328 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5331 A VALARM component can be defined such that it triggers repeatedly.
5332 Such a VALARM component is said to overlap a given time range if at
5333 least one of its triggers overlaps the time range.
5335 The calendar properties COMPLETED, CREATED, DTEND, DTSTAMP,
5336 DTSTART, DUE, and LAST-MODIFIED overlap a given time range if the
5337 following condition holds:
5339 (start
<= date-time) AND (end
> date-time)
5341 Note that if DTEND is not present in a VEVENT, but DURATION is, then
5342 the test should instead operate on the 'effective' DTEND, i.e.,
5343 DTSTART+DURATION. Similarly, if DUE is not present in a VTODO, but
5344 DTSTART and DURATION are, then the test should instead operate on the
5345 'effective' DUE, i.e., DTSTART+DURATION.
5347 The semantic of CALDAV:time-range is not defined for any other
5348 calendar components and properties.
5352 <!ELEMENT time-range EMPTY
>
5354 <!ATTLIST time-range start CDATA #IMPLIED
5355 end CDATA #IMPLIED
>
5356 start value: an iCalendar
"date with UTC time"
5357 end value: an iCalendar
"date with UTC time"
5359 <span class=
"h3"><h3><a name=
"section-9.10">9.10</a>. CALDAV:calendar-multiget XML Element
</h3></span>
5361 Name: calendar-multiget
5363 Namespace: urn:ietf:params:xml:ns:caldav
5365 Purpose: CalDAV report used to retrieve specific calendar object
5368 Description: See
<a href=
"#section-7.9">Section
7.9</a>.
5372 <!ELEMENT calendar-multiget ((DAV:allprop |
5374 DAV:prop)?, DAV:href+)
>
5382 <span class=
"grey">Daboo, et al. Standards Track [Page
94]
</span>
5383 </pre><pre class=
"newpage"><a name=
"page-95" id=
"page-95" href=
"#page-95" class=
"invisible"> </a>
5384 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5387 <span class=
"h3"><h3><a name=
"section-9.11">9.11</a>. CALDAV:free-busy-query XML Element
</h3></span>
5389 Name: free-busy-query
5391 Namespace: urn:ietf:params:xml:ns:caldav
5393 Purpose: CalDAV report used to generate a VFREEBUSY to determine
5394 busy time over a specific time range.
5396 Description: See
<a href=
"#section-7.10">Section
7.10</a>.
5400 <!ELEMENT free-busy-query (time-range)
>
5402 <span class=
"h2"><h2><a name=
"section-10">10</a>. Internationalization Considerations
</h2></span>
5404 CalDAV allows internationalized strings to be stored and retrieved
5405 for the description of calendar collections (see
<a href=
"#section-5.2.1">Section
5.2.1</a>).
5407 The CALDAV:calendar-query REPORT (
<a href=
"#section-7.8">Section
7.8</a>) includes a text
5408 searching option controlled by the CALDAV:text-match element, and
5409 details of character handling are covered in the description of that
5410 element (see
<a href=
"#section-9.7.5">Section
9.7.5</a>).
5412 <span class=
"h2"><h2><a name=
"section-11">11</a>. Security Considerations
</h2></span>
5414 HTTP protocol transactions are sent in the clear over the network
5415 unless protection from snooping is negotiated. This can be
5416 accomplished by use of TLS, as defined in [
<a href=
"http://tools.ietf.org/html/rfc2818" title=
""HTTP Over TLS"">RFC2818
</a>]. In particular,
5417 HTTP Basic authentication MUST NOT be used unless TLS is in effect.
5419 Servers MUST take adequate precautions to ensure that malicious
5420 clients cannot consume excessive server resources (CPU, memory, disk,
5421 etc.) through carefully crafted reports. For example, a client could
5422 upload an event with a recurrence rule that specifies a recurring
5423 event occurring every second for the next
100 years, which would
5424 result in approximately
3 x
10^
9 instances! A report that asks for
5425 recurrences to be expanded over that range would likely constitute a
5426 denial-of-service attack on the server.
5428 When creating new resources (including calendar collections), clients
5429 MUST ensure that the resource name (the last path segment of the
5430 resource URI) assigned to the new resource does not expose any data
5431 from within the iCalendar resource itself or information about the
5432 nature of a calendar collection. This is required to ensure that the
5433 presence of a specific iCalendar component or nature of components in
5434 a collection cannot be inferred based on the name of a resource.
5438 <span class=
"grey">Daboo, et al. Standards Track [Page
95]
</span>
5439 </pre><pre class=
"newpage"><a name=
"page-96" id=
"page-96" href=
"#page-96" class=
"invisible"> </a>
5440 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5443 When rolling up free-busy information, more information about a
5444 user's events is exposed if busy periods overlap or are adjacent
5445 (this tells the client requesting the free-busy information that the
5446 calendar owner has at least two events, rather than knowing only that
5447 the calendar owner has one or more events during the busy period).
5448 Thus, a conservative approach to calendar data privacy would have
5449 servers always coalesce such busy periods when they are the same
5452 Procedure alarms are a known security risk for either clients or
5453 servers to handle, particularly when the alarm was created by another
5454 agent. Clients and servers are not required to execute such
5457 Security considerations described in iCalendar [
<a href=
"http://tools.ietf.org/html/rfc2445" title=
""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445
</a>] and iTIP
5458 [
<a href=
"http://tools.ietf.org/html/rfc2446" title=
""iCalendar Transport-Independent Interoperability Protocol (iTIP) Scheduling Events, BusyTime, To-dos and Journal Entries"">RFC2446
</a>] are also applicable to CalDAV.
5460 Beyond these, CalDAV does not raise any security considerations that
5461 are not present in HTTP [
<a href=
"http://tools.ietf.org/html/rfc2616" title=
""Hypertext Transfer Protocol -- HTTP/1.1"">RFC2616
</a>] and WebDAV [
<a href=
"http://tools.ietf.org/html/rfc2518" title=
""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518
</a>], [
<a href=
"http://tools.ietf.org/html/rfc3253" title=
""Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning)"">RFC3253
</a>],
5462 [
<a href=
"http://tools.ietf.org/html/rfc3744" title=
""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744
</a>].
5464 <span class=
"h2"><h2><a name=
"section-12">12</a>. IANA Considerations
</h2></span>
5466 This document uses one new URN to identify a new XML namespace. The
5467 URN conforms to a registry mechanism described in [
<a href=
"http://tools.ietf.org/html/rfc3688" title=
""The IETF XML Registry"">RFC3688
</a>].
5469 <span class=
"h3"><h3><a name=
"section-12.1">12.1</a>. Namespace Registration
</h3></span>
5471 Registration request for the CalDAV namespace:
5473 URI: urn:ietf:params:xml:ns:caldav
5475 Registrant Contact: See the
"Authors' Addresses" section of this
5478 XML: None. Namespace URIs do not represent an XML specification.
5480 <span class=
"h2"><h2><a name=
"section-13">13</a>. Acknowledgements
</h2></span>
5482 The authors would like to thank the following individuals for
5483 contributing their ideas and support for writing this specification:
5484 Michael Arick, Mario Bonin, Chris Bryant, Scott Carr, Andre
5485 Courtemanche, Mike Douglass, Ted Hardie, Marten den Haring, Jeffrey
5486 Harris, Sam Hartman, Helge Hess, Jeff McCullough, Alexey Melnikov,
5487 Dan Mosedale, Brian Moseley, Francois Perrault, Kervin L. Pierre,
5488 Julian F. Reschke, Wilfredo Sanchez Vega, Mike Shaver, Jari
5489 Urpalainen, Simon Vaillancourt, and Jim Whitehead.
5494 <span class=
"grey">Daboo, et al. Standards Track [Page
96]
</span>
5495 </pre><pre class=
"newpage"><a name=
"page-97" id=
"page-97" href=
"#page-97" class=
"invisible"> </a>
5496 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5499 The authors would also like to thank the Calendaring and Scheduling
5500 Consortium for advice with this specification, and for organizing
5501 interoperability testing events to help refine it.
5503 <span class=
"h2"><h2><a name=
"section-14">14</a>. References
</h2></span>
5505 <span class=
"h3"><h3><a name=
"section-14.1">14.1</a>. Normative References
</h3></span>
5507 [
<a name=
"ref-RFC2119" id=
"ref-RFC2119">RFC2119
</a>] Bradner, S.,
"Key words for use in RFCs to
5508 Indicate Requirement Levels",
<a href=
"http://tools.ietf.org/html/bcp14">BCP
14</a>,
5509 <a href=
"http://tools.ietf.org/html/rfc2119">RFC
2119</a>, March
1997.
5511 [
<a name=
"ref-RFC2246" id=
"ref-RFC2246">RFC2246
</a>] Dierks, T. and C. Allen,
"The TLS Protocol
5512 Version 1.0",
<a href=
"http://tools.ietf.org/html/rfc2246">RFC
2246</a>, January
1999.
5514 [
<a name=
"ref-RFC2445" id=
"ref-RFC2445">RFC2445
</a>] Dawson, F. and Stenerson, D.,
"Internet
5515 Calendaring and Scheduling Core Object
5516 Specification (iCalendar)",
<a href=
"http://tools.ietf.org/html/rfc2445">RFC
2445</a>,
5519 [
<a name=
"ref-RFC2446" id=
"ref-RFC2446">RFC2446
</a>] Silverberg, S., Mansour, S., Dawson, F., and
5520 R. Hopson,
"iCalendar Transport-Independent
5521 Interoperability Protocol (iTIP) Scheduling
5522 Events, BusyTime, To-dos and Journal
5523 Entries",
<a href=
"http://tools.ietf.org/html/rfc2446">RFC
2446</a>, November
1998.
5525 [
<a name=
"ref-RFC2518" id=
"ref-RFC2518">RFC2518
</a>] Goland, Y., Whitehead, E., Faizi, A., Carter,
5526 S., and D. Jensen,
"HTTP Extensions for
5527 Distributed Authoring -- WEBDAV",
<a href=
"http://tools.ietf.org/html/rfc2518">RFC
2518</a>,
5530 [
<a name=
"ref-RFC2616" id=
"ref-RFC2616">RFC2616
</a>] Fielding, R., Gettys, J., Mogul, J., Frystyk,
5531 H., Masinter, L., Leach, P., and T. Berners-
5532 Lee,
"Hypertext Transfer Protocol --
5533 HTTP/1.1",
<a href=
"http://tools.ietf.org/html/rfc2616">RFC
2616</a>, June
1999.
5535 [
<a name=
"ref-RFC2818" id=
"ref-RFC2818">RFC2818
</a>] Rescorla, E.,
"HTTP Over TLS",
<a href=
"http://tools.ietf.org/html/rfc2818">RFC
2818</a>,
5538 [
<a name=
"ref-RFC3253" id=
"ref-RFC3253">RFC3253
</a>] Clemm, G., Amsden, J., Ellison, T., Kaler,
5539 C., and J. Whitehead,
"Versioning Extensions
5540 to WebDAV (Web Distributed Authoring and
5541 Versioning)",
<a href=
"http://tools.ietf.org/html/rfc3253">RFC
3253</a>, March
2002.
5543 [
<a name=
"ref-RFC3688" id=
"ref-RFC3688">RFC3688
</a>] Mealling, M.,
"The IETF XML Registry",
5544 <a href=
"http://tools.ietf.org/html/bcp81">BCP
81</a>,
<a href=
"http://tools.ietf.org/html/rfc3688">RFC
3688</a>, January
2004.
5550 <span class=
"grey">Daboo, et al. Standards Track [Page
97]
</span>
5551 </pre><pre class=
"newpage"><a name=
"page-98" id=
"page-98" href=
"#page-98" class=
"invisible"> </a>
5552 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5555 [
<a name=
"ref-RFC3744" id=
"ref-RFC3744">RFC3744
</a>] Clemm, G., Reschke, J., Sedlar, E., and J.
5556 Whitehead,
"Web Distributed Authoring and
5557 Versioning (WebDAV) Access Control Protocol",
5558 <a href=
"http://tools.ietf.org/html/rfc3744">RFC
3744</a>, May
2004.
5560 [
<a name=
"ref-RFC4346" id=
"ref-RFC4346">RFC4346
</a>] Dierks, T. and E. Rescorla,
"The Transport
5561 Layer Security (TLS) Protocol Version 1.1",
5562 <a href=
"http://tools.ietf.org/html/rfc4346">RFC
4346</a>, April
2006.
5564 [
<a name=
"ref-RFC4790" id=
"ref-RFC4790">RFC4790
</a>] Newman, C., Duerst, M., and A. Gulbrandsen,
5565 "Internet Application Protocol Collation
5566 Registry",
<a href=
"http://tools.ietf.org/html/rfc4790">RFC
4790</a>, March
2007.
5568 [
<a name=
"ref-W3C.REC-xml-20060816" id=
"ref-W3C.REC-xml-20060816">W3C.REC-xml-
20060816</a>] Paoli, J., Maler, E., Yergeau, F., Sperberg-
5569 McQueen, C., and T. Bray,
"Extensible Markup
5570 Language (XML) 1.0 (Fourth Edition)", World
5571 Wide Web Consortium Recommendation REC-xml-
5572 20060816, August
2006,
5573 <<a href=
"http://www.w3.org/TR/2006/REC-xml-20060816">http://www.w3.org/TR/
2006/REC-xml-
20060816</a>>.
5575 <span class=
"h3"><h3><a name=
"section-14.2">14.2</a>. Informative References
</h3></span>
5577 [
<a name=
"ref-RFC2426" id=
"ref-RFC2426">RFC2426
</a>] Dawson, F. and T. Howes,
"vCard MIME
5578 Directory Profile",
<a href=
"http://tools.ietf.org/html/rfc2426">RFC
2426</a>, September
1998.
5580 [
<a name=
"ref-RFC2739" id=
"ref-RFC2739">RFC2739
</a>] Small, T., Hennessy, D., and F. Dawson,
5581 "Calendar Attributes for vCard and LDAP",
5582 <a href=
"http://tools.ietf.org/html/rfc2739">RFC
2739</a>, January
2000.
5584 [
<a name=
"ref-RFC4331" id=
"ref-RFC4331">RFC4331
</a>] Korver, B. and L. Dusseault,
"Quota and Size
5585 Properties for Distributed Authoring and
5586 Versioning (DAV) Collections",
<a href=
"http://tools.ietf.org/html/rfc4331">RFC
4331</a>,
5589 [
<a name=
"ref-RFC4511" id=
"ref-RFC4511">RFC4511
</a>] Sermersheim, J.,
"Lightweight Directory
5590 Access Protocol (LDAP): The Protocol",
5591 <a href=
"http://tools.ietf.org/html/rfc4511">RFC
4511</a>, June
2006.
5593 [
<a name=
"ref-rfc2518bis" id=
"ref-rfc2518bis">rfc2518bis
</a>] Dusseault, L.,
<a style=
"text-decoration: none;" href=
"http://www.google.com/search?sitesearch=tools.ietf.org%2Fhtml%2F&q=inurl:draft-+%22HTTP+Extensions+for%0A+++++++++++++++++++++++++++Distributed+Authoring+-+WebDAV%22">"HTTP Extensions for
5594 Distributed Authoring - WebDAV"</a>, Work
5595 in Progress, December
2006.
5606 <span class=
"grey">Daboo, et al. Standards Track [Page
98]
</span>
5607 </pre><pre class=
"newpage"><a name=
"page-99" id=
"page-99" href=
"#page-99" class=
"invisible"> </a>
5608 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5611 <span class=
"h2"><h2><a name=
"appendix-A">Appendix A
</a>. CalDAV Method Privilege Table (Normative)
</h2></span>
5613 The following table extends the WebDAV Method Privilege Table
5614 specified in
<a href=
"#appendix-B">Appendix B
</a> of [
<a href=
"http://tools.ietf.org/html/rfc3744" title=
""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744
</a>].
5616 +------------+------------------------------------------------------+
5617 | METHOD | PRIVILEGES |
5618 +------------+------------------------------------------------------+
5619 | MKCALENDAR | DAV:bind |
5620 | REPORT | DAV:read or CALDAV:read-free-busy (on all referenced |
5622 +------------+------------------------------------------------------+
5624 <span class=
"h2"><h2><a name=
"appendix-B">Appendix B
</a>. Calendar Collections Used in the Examples
</h2></span>
5626 This appendix shows the calendar object resources contained in the
5627 calendar collection queried in the examples throughout this document.
5629 The content of the calendar collection is being shown as if it were
5630 returned by a CALDAV:calendar-query REPORT request designed to return
5631 all the calendar data in the collection:
5633 >> Request
<<
5635 REPORT /bernard/work/ HTTP/
1.1
5636 Host: cal.example.com
5638 Content-Type: application/xml;
charset=
"utf-8"
5639 Content-Length: xxxx
5641 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
5642 <C:calendar-query xmlns:
D=
"DAV:"
5643 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
5646 <C:calendar-data/
>
5649 <C:comp-filter
name=
"VCALENDAR"/
>
5651 </C:calendar-query
>
5653 >> Response
<<
5655 HTTP/
1.1 207 Multi-Status
5656 Content-Type: application/xml;
charset=
"utf-8"
5657 Content-Length: xxxx
5662 <span class=
"grey">Daboo, et al. Standards Track [Page
99]
</span>
5663 </pre><pre class=
"newpage"><a name=
"page-100" id=
"page-100" href=
"#page-100" class=
"invisible"> </a>
5664 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5667 <?xml
version=
"1.0" encoding=
"utf-8" ?
>
5668 <D:multistatus xmlns:
D=
"DAV:"
5669 xmlns:
C=
"urn:ietf:params:xml:ns:caldav">
5672 <D:href
>http://cal.example.com/bernard/work/abcd1.ics
</D:href
>
5675 <D:getetag
>"fffff-abcd1"</D:getetag
>
5676 <C:calendar-data
>BEGIN:VCALENDAR
5678 PRODID:-//Example Corp.//CalDAV Client//EN
5680 LAST-MODIFIED:
20040110T032845Z
5683 DTSTART:
20000404T020000
5684 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
5690 DTSTART:
20001026T020000
5691 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
5698 DTSTAMP:
20060206T001102Z
5699 DTSTART;TZID=US/Eastern:
20060102T100000
5702 Description:Go Steelers!
5703 UID:
74855313FA803DA593CD579A@example.com
5706 </C:calendar-data
>
5708 <D:status
>HTTP/
1.1 200 OK
</D:status
>
5713 <D:href
>http://cal.example.com/bernard/work/abcd2.ics
</D:href
>
5718 <span class=
"grey">Daboo, et al. Standards Track [Page
100]
</span>
5719 </pre><pre class=
"newpage"><a name=
"page-101" id=
"page-101" href=
"#page-101" class=
"invisible"> </a>
5720 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5724 <D:getetag
>"fffff-abcd2"</D:getetag
>
5725 <C:calendar-data
>BEGIN:VCALENDAR
5727 PRODID:-//Example Corp.//CalDAV Client//EN
5729 LAST-MODIFIED:
20040110T032845Z
5732 DTSTART:
20000404T020000
5733 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
5739 DTSTART:
20001026T020000
5740 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
5747 DTSTAMP:
20060206T001121Z
5748 DTSTART;TZID=US/Eastern:
20060102T120000
5750 RRULE:FREQ=DAILY;COUNT=
5
5752 UID:
00959BC664CA650E933C892C@example.com
5755 DTSTAMP:
20060206T001121Z
5756 DTSTART;TZID=US/Eastern:
20060104T140000
5758 RECURRENCE-ID;TZID=US/Eastern:
20060104T120000
5759 SUMMARY:Event #
2 bis
5760 UID:
00959BC664CA650E933C892C@example.com
5763 </C:calendar-data
>
5765 <D:status
>HTTP/
1.1 200 OK
</D:status
>
5770 <D:href
>http://cal.example.com/bernard/work/abcd3.ics
</D:href
>
5774 <span class=
"grey">Daboo, et al. Standards Track [Page
101]
</span>
5775 </pre><pre class=
"newpage"><a name=
"page-102" id=
"page-102" href=
"#page-102" class=
"invisible"> </a>
5776 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5781 <D:getetag
>"fffff-abcd3"</D:getetag
>
5782 <C:calendar-data
>BEGIN:VCALENDAR
5784 PRODID:-//Example Corp.//CalDAV Client//EN
5786 LAST-MODIFIED:
20040110T032845Z
5789 DTSTART:
20000404T020000
5790 RRULE:FREQ=YEARLY;BYDAY=
1SU;BYMONTH=
4
5796 DTSTART:
20001026T020000
5797 RRULE:FREQ=YEARLY;BYDAY=-
1SU;BYMONTH=
10
5804 ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com
5805 ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com
5806 DTSTAMP:
20060206T001220Z
5807 DTSTART;TZID=US/Eastern:
20060104T100000
5809 LAST-MODIFIED:
20060206T001330Z
5810 ORGANIZER:mailto:cyrus@example.com
5814 UID:DC6C50A017428C5216A2F1CD@example.com
5817 </C:calendar-data
>
5819 <D:status
>HTTP/
1.1 200 OK
</D:status
>
5824 <D:href
>http://cal.example.com/bernard/work/abcd4.ics
</D:href
>
5830 <span class=
"grey">Daboo, et al. Standards Track [Page
102]
</span>
5831 </pre><pre class=
"newpage"><a name=
"page-103" id=
"page-103" href=
"#page-103" class=
"invisible"> </a>
5832 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5835 <D:getetag
>"fffff-abcd4"</D:getetag
>
5836 <C:calendar-data
>BEGIN:VCALENDAR
5838 PRODID:-//Example Corp.//CalDAV Client//EN
5840 DTSTAMP:
20060205T235335Z
5841 DUE;VALUE=DATE:
20060104
5844 UID:DDDEEB7915FA61233B861457@example.com
5847 TRIGGER;RELATED=START:-PT10M
5851 </C:calendar-data
>
5853 <D:status
>HTTP/
1.1 200 OK
</D:status
>
5858 <D:href
>http://cal.example.com/bernard/work/abcd5.ics
</D:href
>
5861 <D:getetag
>"fffff-abcd5"</D:getetag
>
5862 <C:calendar-data
>BEGIN:VCALENDAR
5864 PRODID:-//Example Corp.//CalDAV Client//EN
5866 DTSTAMP:
20060205T235300Z
5867 DUE;VALUE=DATE:
20060106
5868 LAST-MODIFIED:
20060205T235308Z
5872 UID:E10BA47467C5C69BB74E8720@example.com
5875 TRIGGER;RELATED=START:-PT10M
5879 </C:calendar-data
>
5881 <D:status
>HTTP/
1.1 200 OK
</D:status
>
5886 <span class=
"grey">Daboo, et al. Standards Track [Page
103]
</span>
5887 </pre><pre class=
"newpage"><a name=
"page-104" id=
"page-104" href=
"#page-104" class=
"invisible"> </a>
5888 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5894 <D:href
>http://cal.example.com/bernard/work/abcd6.ics
</D:href
>
5897 <D:getetag
>"fffff-abcd6"</D:getetag
>
5898 <C:calendar-data
>BEGIN:VCALENDAR
5900 PRODID:-//Example Corp.//CalDAV Client//EN
5902 COMPLETED:
20051223T122322Z
5903 DTSTAMP:
20060205T235400Z
5904 DUE;VALUE=DATE:
20051225
5905 LAST-MODIFIED:
20060205T235308Z
5909 UID:E10BA47467C5C69BB74E8722@example.com
5912 </C:calendar-data
>
5914 <D:status
>HTTP/
1.1 200 OK
</D:status
>
5919 <D:href
>http://cal.example.com/bernard/work/abcd7.ics
</D:href
>
5922 <D:getetag
>"fffff-abcd7"</D:getetag
>
5923 <C:calendar-data
>BEGIN:VCALENDAR
5925 PRODID:-//Example Corp.//CalDAV Client//EN
5927 DTSTAMP:
20060205T235600Z
5928 DUE;VALUE=DATE:
20060101
5929 LAST-MODIFIED:
20060205T235308Z
5933 UID:E10BA47467C5C69BB74E8725@example.com
5936 </C:calendar-data
>
5938 <D:status
>HTTP/
1.1 200 OK
</D:status
>
5942 <span class=
"grey">Daboo, et al. Standards Track [Page
104]
</span>
5943 </pre><pre class=
"newpage"><a name=
"page-105" id=
"page-105" href=
"#page-105" class=
"invisible"> </a>
5944 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
5951 <D:href
>http://cal.example.com/bernard/work/abcd8.ics
</D:href
>
5954 <D:getetag
>"fffff-abcd8"</D:getetag
>
5955 <C:calendar-data
>BEGIN:VCALENDAR
5957 PRODID:-//Example Corp.//CalDAV Client//EN
5959 ORGANIZER;
CN=
"Bernard Desruisseaux":mailto:bernard@example.com
5960 UID:
76ef34-
54a3d2@example.com
5961 DTSTAMP:
20050530T123421Z
5962 DTSTART:
20060101T000000Z
5963 DTEND:
20060108T000000Z
5964 FREEBUSY:
20050531T230000Z/
20050601T010000Z
5965 FREEBUSY;FBTYPE=BUSY-TENTATIVE:
20060102T100000Z/
20060102T120000Z
5966 FREEBUSY:
20060103T100000Z/
20060103T120000Z
5967 FREEBUSY:
20060104T100000Z/
20060104T120000Z
5968 FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:
20060105T100000Z/
20060105T120000Z
5969 FREEBUSY:
20060106T100000Z/
20060106T120000Z
5972 </C:calendar-data
>
5974 <D:status
>HTTP/
1.1 200 OK
</D:status
>
5978 </D:multistatus
>
5998 <span class=
"grey">Daboo, et al. Standards Track [Page
105]
</span>
5999 </pre><pre class=
"newpage"><a name=
"page-106" id=
"page-106" href=
"#page-106" class=
"invisible"> </a>
6000 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
6011 EMail: cyrus@daboo.name
6012 URI:
<a href=
"http://www.apple.com/">http://www.apple.com/
</a>
6015 Bernard Desruisseaux
6017 600 Blvd. de Maisonneuve West
6019 Montreal, QC H3A
3J2
6022 EMail: bernard.desruisseaux@oracle.com
6023 URI:
<a href=
"http://www.oracle.com/">http://www.oracle.com/
</a>
6032 EMail: ldusseault@commerce.net
6033 URI:
<a href=
"http://commerce.net/">http://commerce.net/
</a>
6054 <span class=
"grey">Daboo, et al. Standards Track [Page
106]
</span>
6055 </pre><pre class=
"newpage"><a name=
"page-107" id=
"page-107" href=
"#page-107" class=
"invisible"> </a>
6056 <span class=
"grey"><a href=
"http://tools.ietf.org/html/rfc4791">RFC
4791</a> CalDAV March
2007</span>
6059 Full Copyright Statement
6061 Copyright (C) The IETF Trust (
2007).
6063 This document is subject to the rights, licenses and restrictions
6064 contained in
<a href=
"http://tools.ietf.org/html/bcp78">BCP
78</a>, and except as set forth therein, the authors
6065 retain all their rights.
6067 This document and the information contained herein are provided on an
6068 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
6069 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
6070 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
6071 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
6072 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
6073 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
6075 Intellectual Property
6077 The IETF takes no position regarding the validity or scope of any
6078 Intellectual Property Rights or other rights that might be claimed to
6079 pertain to the implementation or use of the technology described in
6080 this document or the extent to which any license under such rights
6081 might or might not be available; nor does it represent that it has
6082 made any independent effort to identify any such rights. Information
6083 on the procedures with respect to rights in RFC documents can be
6084 found in
<a href=
"http://tools.ietf.org/html/bcp78">BCP
78</a> and
<a href=
"http://tools.ietf.org/html/bcp79">BCP
79</a>.
6086 Copies of IPR disclosures made to the IETF Secretariat and any
6087 assurances of licenses to be made available, or the result of an
6088 attempt made to obtain a general license or permission for the use of
6089 such proprietary rights by implementers or users of this
6090 specification can be obtained from the IETF on-line IPR repository at
6091 <a href=
"http://www.ietf.org/ipr">http://www.ietf.org/ipr
</a>.
6093 The IETF invites any interested party to bring to its attention any
6094 copyrights, patents or patent applications, or other proprietary
6095 rights that may cover technology that may be required to implement
6096 this standard. Please address the information to the IETF at
6101 Funding for the RFC Editor function is currently provided by the
6110 Daboo, et al. Standards Track [Page
107]
6111 </pre><pre class=
"newpage">
6113 <span class=
"noprint"><small><small>Html markup produced by rfcmarkup
1.74, available from
6114 <a href=
"http://tools.ietf.org/tools/rfcmarkup/">http://tools.ietf.org/tools/rfcmarkup/
</a>
6115 </small></small></span>