]> git.datanom.net - webcal.git/blame - caldav/rfc4791.html
Initial upload
[webcal.git] / caldav / rfc4791.html
CommitLineData
a5eae6b7
MR
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>
3
4
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>
11
12 <style type="text/css">
13 body {
14 margin: 0px 8px;
15 font-size: 1em;
16 }
17 h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
18 font-weight: bold;
19 line-height: 0pt;
20 display: inline;
21 white-space: pre;
22 font-family: monospace;
23 font-size: 1em;
24 font-weight: bold;
25 }
26 pre {
27 font-size: 1em;
28 margin-top: 0px;
29 margin-bottom: 0px;
30 }
31 .pre {
32 white-space: pre;
33 font-family: monospace;
34 }
35 .header{
36 font-weight: bold;
37 }
38 .newpage {
39 page-break-before: always;
40 }
41 .invisible {
42 text-decoration: none;
43 color: white;
44 }
45 @media print {
46 body {
47 font-size: 10.5pt;
48 }
49 h1, h2, h3, h4, h5, h6 {
50 font-size: 10.5pt;
51 }
52
53 a:link, a:visited {
54 color: inherit;
55 text-decoration: none;
56 }
57 .noprint {
58 display: none;
59 }
60 }
61 @media screen {
62 .grey, .grey a:link, .grey a:visited {
63 color: #777;
64 }
65 .docinfo {
66 background-color: #EEE;
67 }
68 .top {
69 border-top: 7px solid #EEE;
70 }
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; }
81
82 .legend { font-size: 90%; }
83 .cplate { font-size: 70%; border: solid grey 1px; }
84 }
85 </style>
86
87 <script type="text/javascript"><!--
88 function addHeaderTags() {
89 var spans = document.getElementsByTagName("span");
90 for (var i=0; i < spans.length; i++) {
91 var elem = spans[i];
92 if (elem) {
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+">";
96 }
97 }
98 }
99 }
100 var legend_html = "Colour legend:<br /> <table> <tr><td>Unknown:</td> <td><span class='cplate bgwhite'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Draft:</td> <td><span class='cplate bgred'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Informational:</td> <td><span class='cplate bgorange'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Experimental:</td> <td><span class='cplate bgyellow'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Best Common Practice:</td><td><span class='cplate bgmagenta'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Proposed Standard:</td><td><span class='cplate bgblue'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Draft Standard:</td> <td><span class='cplate bgcyan'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Standard:</td> <td><span class='cplate bggreen'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Historic:</td> <td><span class='cplate bggrey'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Obsolete:</td> <td><span class='cplate bgbrown'>&nbsp;&nbsp;&nbsp;&nbsp;</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';
105 }
106 function hideElem(id) {
107 var elem = document.getElementById(id);
108 elem.style.visibility='hidden';
109 elem.innerHTML = "";
110 }
111 // -->
112 </script>
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');">
117 </div>
118 </div>
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
124Request for Comments: 4791 Apple
125Category: Standards Track B. Desruisseaux
126 Oracle
127 L. Dusseault
128 CommerceNet
129 March 2007
130
131
132 <span class="h1"><h1>Calendaring Extensions to WebDAV (CalDAV)</h1></span>
133
134Status of This Memo
135
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.
141
142Copyright Notice
143
144 Copyright (C) The IETF Trust (2007).
145
146Abstract
147
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"
152 feature of CalDAV.
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
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>
177
178
179Table of Contents
180
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>
227
228
229
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>
233
234
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>
283
284
285
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>
289
290
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>
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
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>
345
346
347<span class="h2"><h2><a name="section-1">1</a>. Introduction</h2></span>
348
349 The concept of using HTTP [<a href="http://tools.ietf.org/html/rfc2616" title="&quot;Hypertext Transfer Protocol -- HTTP/1.1&quot;">RFC2616</a>] and WebDAV [<a href="http://tools.ietf.org/html/rfc2518" title="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">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="&quot;Internet Calendaring and Scheduling Core Object Specification (iCalendar)&quot;">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
360 access protocol.
361
362<span class="h3"><h3><a name="section-1.1">1.1</a>. Notational Conventions</h3></span>
363
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="&quot;Key words for use in RFCs to Indicate Requirement Levels&quot;">RFC2119</a>].
367
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&nbsp;1.4.2 of [RFC3253]</a>.
370
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.
375
376<span class="h3"><h3><a name="section-1.2">1.2</a>. XML Namespaces and Processing</h3></span>
377
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="&quot;Extensible Markup Language (XML) 1.0 (Fourth Edition)&quot;">W3C.REC-xml-20060816</a>].
381
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.
387
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>], which use the "DAV:" namespace.
393 Wherever such XML elements appear, they are explicitly prefixed with
394 "DAV:" to avoid confusion.
395
396
397
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>
401
402
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.
406
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>]; in particular, <a href="#section-14">Section 14</a>, and Appendix 3 of
409 that specification.
410
411<span class="h3"><h3><a name="section-1.3">1.3</a>. Method Preconditions and Postconditions</h3></span>
412
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
421 request.
422
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
429 by the request.
430
431<span class="h2"><h2><a name="section-2">2</a>. Requirements Overview</h2></span>
432
433 This section lists what functionality is required of a CalDAV server.
434 To advertise support for CalDAV, a server:
435
436 o MUST support iCalendar [<a href="http://tools.ietf.org/html/rfc2445" title="&quot;Internet Calendaring and Scheduling Core Object Specification (iCalendar)&quot;">RFC2445</a>] as a media type for the calendar
437 object resource format;
438
439 o MUST support WebDAV Class 1 [<a href="http://tools.ietf.org/html/rfc2518" title="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>] (note that [<a href="#ref-rfc2518bis" title="&quot;HTTP Extensions for Distributed Authoring - WebDAV&quot;">rfc2518bis</a>]
440 describes clarifications to [<a href="http://tools.ietf.org/html/rfc2518" title="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>] that aid interoperability);
441
442 o MUST support WebDAV ACL [<a href="http://tools.ietf.org/html/rfc3744" title="&quot;Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol&quot;">RFC3744</a>] with the additional privilege
443 defined in <a href="#section-6.1">Section 6.1</a> of this document;
444
445 o MUST support transport over TLS [<a href="http://tools.ietf.org/html/rfc2246" title="&quot;The TLS Protocol Version 1.0&quot;">RFC2246</a>] as defined in [<a href="http://tools.ietf.org/html/rfc2818" title="&quot;HTTP Over TLS&quot;">RFC2818</a>]
446 (note that [<a href="http://tools.ietf.org/html/rfc2246" title="&quot;The TLS Protocol Version 1.0&quot;">RFC2246</a>] has been obsoleted by [<a href="http://tools.ietf.org/html/rfc4346" title="&quot;The Transport Layer Security (TLS) Protocol Version 1.1&quot;">RFC4346</a>]);
447
448 o MUST support ETags [<a href="http://tools.ietf.org/html/rfc2616" title="&quot;Hypertext Transfer Protocol -- HTTP/1.1&quot;">RFC2616</a>] with additional requirements
449 specified in <a href="#section-5.3.4">Section 5.3.4</a> of this document;
450
451
452
453
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>
457
458
459 o MUST support all calendaring reports defined in <a href="#section-7">Section 7</a> of this
460 document; and
461
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="&quot;Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning)&quot;">RFC3253</a>].
466
467 In addition, a server:
468
469 o SHOULD support the MKCALENDAR method defined in <a href="#section-5.3.1">Section 5.3.1</a> of
470 this document.
471
472<span class="h2"><h2><a name="section-3">3</a>. Calendaring Data Model</h2></span>
473
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
478 data model.
479
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>.
489
490<span class="h3"><h3><a name="section-3.1">3.1</a>. Calendar Server</h3></span>
491
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).
501
502 A WebDAV repository MAY include calendar data in some parts of its
503 URL namespace, and non-calendaring data in other parts.
504
505 A WebDAV repository can advertise itself as a CalDAV server if it
506 supports the functionality defined in this specification at any point
507
508
509
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>
513
514
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.
526
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.
535
536<span class="h3"><h3><a name="section-3.2">3.2</a>. Recurrence and the Data Model</h3></span>
537
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
551 instances.
552
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
557 time range.
558
559
560
561
562
563
564
565
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>
569
570
571<span class="h2"><h2><a name="section-4">4</a>. Calendar Resources</h2></span>
572
573<span class="h3"><h3><a name="section-4.1">4.1</a>. Calendar Object Resources</h3></span>
574
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.
584
585 Calendar object resources contained in calendar collections MUST NOT
586 specify the iCalendar METHOD property.
587
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.
591
592 Calendar components in a calendar collection that have different UID
593 property values MUST be stored in separate calendar object resources.
594
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).
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
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>
625
626
627 For example, given the following iCalendar object:
628
629 BEGIN:VCALENDAR
630 PRODID:-//Example Corp.//CalDAV Client//EN
631 VERSION:2.0
632 BEGIN:VEVENT
633 UID:1@example.com
634 SUMMARY:One-off Meeting
635 DTSTAMP:20041210T183904Z
636 DTSTART:20041207T120000Z
637 DTEND:20041207T130000Z
638 END:VEVENT
639 BEGIN:VEVENT
640 UID:2@example.com
641 SUMMARY:Weekly Meeting
642 DTSTAMP:20041210T183838Z
643 DTSTART:20041206T120000Z
644 DTEND:20041206T130000Z
645 RRULE:FREQ=WEEKLY
646 END:VEVENT
647 BEGIN:VEVENT
648 UID:2@example.com
649 SUMMARY:Weekly Meeting
650 RECURRENCE-ID:20041213T120000Z
651 DTSTAMP:20041210T183838Z
652 DTSTART:20041213T130000Z
653 DTEND:20041213T140000Z
654 END:VEVENT
655 END:VCALENDAR
656
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.
662
663<span class="h3"><h3><a name="section-4.2">4.2</a>. Calendar Collection</h3></span>
664
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:
671 calendar is:
672
673 &lt;!ELEMENT calendar EMPTY&gt;
674
675
676
677
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>
681
682
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.
693
694 The following restrictions are applied to the resources within a
695 calendar collection:
696
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.
705
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
712 collection.
713
714 Multiple calendar collections MAY be children of the same collection.
715
716<span class="h2"><h2><a name="section-5">5</a>. Calendar Access Feature</h2></span>
717
718<span class="h3"><h3><a name="section-5.1">5.1</a>. Calendar Access Support</h3></span>
719
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.
726
727
728
729
730
731
732
733
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>
737
738
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>
740 Support
741
742 &gt;&gt; Request &lt;&lt;
743
744 OPTIONS /home/bernard/calendars/ HTTP/1.1
745 Host: cal.example.com
746
747 &gt;&gt; Response &lt;&lt;
748
749 HTTP/1.1 200 OK
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
754 Content-Length: 0
755
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.
760
761<span class="h3"><h3><a name="section-5.2">5.2</a>. Calendar Collection Properties</h3></span>
762
763 This section defines properties for calendar collections.
764
765<span class="h4"><h4><a name="section-5.2.1">5.2.1</a>. CALDAV:calendar-description Property</h4></span>
766
767 Name: calendar-description
768
769 Namespace: urn:ietf:params:xml:ns:caldav
770
771 Purpose: Provides a human-readable description of the calendar
772 collection.
773
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">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.
781
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
785 calendar collection.
786
787
788
789
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>
793
794
795 Definition:
796
797 &lt;!ELEMENT calendar-description (#PCDATA)&gt;
798 PCDATA value: string
799
800 Example:
801
802 &lt;C:calendar-description xml:lang="fr-CA"
803 xmlns:C="urn:ietf:params:xml:ns:caldav"
804 &gt;Calendrier de Mathilde Desruisseaux&lt;/C:calendar-description&gt;
805
806<span class="h4"><h4><a name="section-5.2.2">5.2.2</a>. CALDAV:calendar-timezone Property</h4></span>
807
808 Name: calendar-timezone
809
810 Namespace: urn:ietf:params:xml:ns:caldav
811
812 Purpose: Specifies a time zone on a calendar collection.
813
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&nbsp;12.14.1 of [RFC2518]</a>).
817
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
831 of their choice.
832
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 &amp;lt;, &amp;gt;, &amp;amp; etc. entity
836 encoding or the use of a &lt;![CDATA[ ... ]]&gt; construct. In the
837 later case, the iCalendar data cannot contain the character
838 sequence "]]&gt;", which is the end delimiter for the CDATA section.
839
840
841
842
843
844
845
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>
849
850
851 Definition:
852
853 &lt;!ELEMENT calendar-timezone (#PCDATA)&gt;
854 PCDATA value: an iCalendar object with exactly one VTIMEZONE
855 component.
856
857 Example:
858
859 &lt;C:calendar-timezone
860 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;BEGIN:VCALENDAR
861 PRODID:-//Example Corp.//CalDAV Client//EN
862 VERSION:2.0
863 BEGIN:VTIMEZONE
864 TZID:US-Eastern
865 LAST-MODIFIED:19870101T000000Z
866 BEGIN:STANDARD
867 DTSTART:19671029T020000
868 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
869 TZOFFSETFROM:-0400
870 TZOFFSETTO:-0500
871 TZNAME:Eastern Standard Time (US &amp;amp; Canada)
872 END:STANDARD
873 BEGIN:DAYLIGHT
874 DTSTART:19870405T020000
875 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
876 TZOFFSETFROM:-0500
877 TZOFFSETTO:-0400
878 TZNAME:Eastern Daylight Time (US &amp;amp; Canada)
879 END:DAYLIGHT
880 END:VTIMEZONE
881 END:VCALENDAR
882 &lt;/C:calendar-timezone&gt;
883
884<span class="h4"><h4><a name="section-5.2.3">5.2.3</a>. CALDAV:supported-calendar-component-set Property</h4></span>
885
886 Name: supported-calendar-component-set
887
888 Namespace: urn:ietf:params:xml:ns:caldav
889
890 Purpose: Specifies the calendar component types (e.g., VEVENT,
891 VTODO, etc.) that calendar object resources can contain in the
892 calendar collection.
893
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>]).
898
899
900
901
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>
905
906
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 &lt;C:comp name="VTIMEZONE"/&gt; 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.
924
925 Definition:
926
927 &lt;!ELEMENT supported-calendar-component-set (comp+)&gt;
928
929 Example:
930
931 &lt;C:supported-calendar-component-set
932 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
933 &lt;C:comp name="VEVENT"/&gt;
934 &lt;C:comp name="VTODO"/&gt;
935 &lt;/C:supported-calendar-component-set&gt;
936
937<span class="h4"><h4><a name="section-5.2.4">5.2.4</a>. CALDAV:supported-calendar-data Property</h4></span>
938
939 Name: supported-calendar-data
940
941 Namespace: urn:ietf:params:xml:ns:caldav
942
943 Purpose: Specifies what media types are allowed for calendar object
944 resources in a calendar collection.
945
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>]).
950
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
955
956
957
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>
961
962
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.
969
970 Definition:
971
972 &lt;!ELEMENT supported-calendar-data (calendar-data+)&gt;
973
974 Example:
975
976 &lt;C:supported-calendar-data
977 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
978 &lt;C:calendar-data content-type="text/calendar" version="2.0"/&gt;
979 &lt;/C:supported-calendar-data&gt;
980
981<span class="h4"><h4><a name="section-5.2.5">5.2.5</a>. CALDAV:max-resource-size Property</h4></span>
982
983 Name: max-resource-size
984
985 Namespace: urn:ietf:params:xml:ns:caldav
986
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.
990
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>]).
995
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
1004 size.
1005
1006 Definition:
1007
1008 &lt;!ELEMENT max-resource-size (#PCDATA)&gt;
1009 PCDATA value: a numeric value (positive integer)
1010
1011
1012
1013
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>
1017
1018
1019 Example:
1020
1021 &lt;C:max-resource-size xmlns:C="urn:ietf:params:xml:ns:caldav"
1022 &gt;102400&lt;/C:max-resource-size&gt;
1023
1024<span class="h4"><h4><a name="section-5.2.6">5.2.6</a>. CALDAV:min-date-time Property</h4></span>
1025
1026 Name: min-date-time
1027
1028 Namespace: urn:ietf:params:xml:ns:caldav
1029
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
1033 collection.
1034
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>]).
1039
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.
1055
1056 Definition:
1057
1058 &lt;!ELEMENT min-date-time (#PCDATA)&gt;
1059 PCDATA value: an iCalendar format DATE-TIME value in UTC
1060
1061 Example:
1062
1063 &lt;C:min-date-time xmlns:C="urn:ietf:params:xml:ns:caldav"
1064 &gt;19000101T000000Z&lt;/C:min-date-time&gt;
1065
1066
1067
1068
1069
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>
1073
1074
1075<span class="h4"><h4><a name="section-5.2.7">5.2.7</a>. CALDAV:max-date-time Property</h4></span>
1076
1077 Name: max-date-time
1078
1079 Namespace: urn:ietf:params:xml:ns:caldav
1080
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
1084 collection.
1085
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>]).
1090
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.
1106
1107 Definition:
1108
1109 &lt;!ELEMENT max-date-time (#PCDATA)&gt;
1110 PCDATA value: an iCalendar format DATE-TIME value in UTC
1111
1112 Example:
1113
1114 &lt;C:max-date-time xmlns:C="urn:ietf:params:xml:ns:caldav"
1115 &gt;20491231T235959Z&lt;/C:max-date-time&gt;
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
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>
1129
1130
1131<span class="h4"><h4><a name="section-5.2.8">5.2.8</a>. CALDAV:max-instances Property</h4></span>
1132
1133 Name: max-instances
1134
1135 Namespace: urn:ietf:params:xml:ns:caldav
1136
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.
1140
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>]).
1145
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.
1155
1156 Definition:
1157
1158 &lt;!ELEMENT max-instances (#PCDATA)&gt;
1159 PCDATA value: a numeric value (integer greater than zero)
1160
1161 Example:
1162
1163 &lt;C:max-instances xmlns:C="urn:ietf:params:xml:ns:caldav"
1164 &gt;100&lt;/C:max-instances&gt;
1165
1166<span class="h4"><h4><a name="section-5.2.9">5.2.9</a>. CALDAV:max-attendees-per-instance Property</h4></span>
1167
1168 Name: max-attendees-per-instance
1169
1170 Namespace: urn:ietf:params:xml:ns:caldav
1171
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.
1175
1176 Conformance: This property MAY be defined on any calendar
1177 collection. If defined, it MUST be protected and SHOULD NOT be
1178
1179
1180
1181
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>
1185
1186
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>]).
1189
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
1199 calendar component.
1200
1201 Definition:
1202
1203 &lt;!ELEMENT max-attendees-per-instance (#PCDATA)&gt;
1204 PCDATA value: a numeric value (integer greater than zero)
1205
1206 Example:
1207
1208 &lt;C:max-attendees-per-instance
1209 xmlns:C="urn:ietf:params:xml:ns:caldav"
1210 &gt;25&lt;/C:max-attendees-per-instance&gt;
1211
1212<span class="h4"><h4><a name="section-5.2.10">5.2.10</a>. Additional Precondition for PROPPATCH</h4></span>
1213
1214 This specification requires an additional Precondition for the
1215 PROPPATCH method. The precondition is:
1216
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.
1220
1221<span class="h3"><h3><a name="section-5.3">5.3</a>. Creating Resources</h3></span>
1222
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.
1227
1228<span class="h4"><h4><a name="section-5.3.1">5.3.1</a>. MKCALENDAR Method</h4></span>
1229
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.
1233
1234
1235
1236
1237
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>
1241
1242
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.
1249
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.
1263
1264 If a MKCALENDAR request fails, the server state preceding the request
1265 MUST be restored.
1266
1267 Marshalling:
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&nbsp;12.13.2 of [RFC2518]</a>.
1276
1277 &lt;!ELEMENT mkcalendar (DAV:set)&gt;
1278
1279 If a response body for a successful request is included, it MUST
1280 be a CALDAV:mkcalendar-response XML element.
1281
1282 &lt;!ELEMENT mkcalendar-response ANY&gt;
1283
1284 The response MUST include a Cache-Control:no-cache header.
1285
1286 Preconditions:
1287
1288 (DAV:resource-must-be-null): A resource MUST NOT exist at the
1289 Request-URI;
1290
1291
1292
1293
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>
1297
1298
1299 (CALDAV:calendar-collection-location-ok): The Request-URI MUST
1300 identify a location where a calendar collection can be created;
1301
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;
1305
1306 (DAV:needs-privilege): The DAV:bind privilege MUST be granted to
1307 the current user on the parent collection of the Request-URI.
1308
1309 Postconditions:
1310
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
1314 XML elements.
1315
1316<span class="h5"><h5><a name="section-5.3.1.1">5.3.1.1</a>. Status Codes</h5></span>
1317
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
1320 means exhaustive.
1321
1322 201 (Created) - The calendar collection resource was created in
1323 its entirety;
1324
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:
1330
1331 403 (Forbidden) - The client, for reasons the server chooses
1332 not to specify, cannot alter one of the properties;
1333
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;
1337
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
1341 body;
1342
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
1346
1347
1348
1349
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>
1353
1354
1355 507 (Insufficient Storage) - The server did not have sufficient
1356 space to record the property;
1357
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;
1362
1363 409 (Conflict) - A collection cannot be made at the Request-URI
1364 until one or more intermediate collections have been created;
1365
1366 415 (Unsupported Media Type) - The server does not support the
1367 request type of the body; and
1368
1369 507 (Insufficient Storage) - The resource does not have sufficient
1370 space to record the state of the resource after the execution of
1371 this method.
1372
1373<span class="h5"><h5><a name="section-5.3.1.2">5.3.1.2</a>. Example: Successful MKCALENDAR Request</h5></span>
1374
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-
1379 timezone.
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
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>
1409
1410
1411 &gt;&gt; Request &lt;&lt;
1412
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
1417
1418 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
1419 &lt;C:mkcalendar xmlns:D="DAV:"
1420 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
1421 &lt;D:set&gt;
1422 &lt;D:prop&gt;
1423 &lt;D:displayname&gt;Lisa's Events&lt;/D:displayname&gt;
1424 &lt;C:calendar-description xml:lang="en"
1425 &gt;Calendar restricted to events.&lt;/C:calendar-description&gt;
1426 &lt;C:supported-calendar-component-set&gt;
1427 &lt;C:comp name="VEVENT"/&gt;
1428 &lt;/C:supported-calendar-component-set&gt;
1429 &lt;C:calendar-timezone&gt;&lt;![CDATA[BEGIN:VCALENDAR
1430 PRODID:-//Example Corp.//CalDAV Client//EN
1431 VERSION:2.0
1432 BEGIN:VTIMEZONE
1433 TZID:US-Eastern
1434 LAST-MODIFIED:19870101T000000Z
1435 BEGIN:STANDARD
1436 DTSTART:19671029T020000
1437 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
1438 TZOFFSETFROM:-0400
1439 TZOFFSETTO:-0500
1440 TZNAME:Eastern Standard Time (US &amp; Canada)
1441 END:STANDARD
1442 BEGIN:DAYLIGHT
1443 DTSTART:19870405T020000
1444 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
1445 TZOFFSETFROM:-0500
1446 TZOFFSETTO:-0400
1447 TZNAME:Eastern Daylight Time (US &amp; Canada)
1448 END:DAYLIGHT
1449 END:VTIMEZONE
1450 END:VCALENDAR
1451 ]]&gt;&lt;/C:calendar-timezone&gt;
1452 &lt;/D:prop&gt;
1453 &lt;/D:set&gt;
1454 &lt;/C:mkcalendar&gt;
1455
1456
1457
1458
1459
1460
1461
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>
1465
1466
1467 &gt;&gt; Response &lt;&lt;
1468
1469 HTTP/1.1 201 Created
1470 Cache-Control: no-cache
1471 Date: Sat, 11 Nov 2006 09:32:12 GMT
1472 Content-Length: 0
1473
1474<span class="h4"><h4><a name="section-5.3.2">5.3.2</a>. Creating Calendar Object Resources</h4></span>
1475
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.
1483
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.
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
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>
1521
1522
1523 &gt;&gt; Request &lt;&lt;
1524
1525 PUT /home/lisa/calendars/events/qwue23489.ics HTTP/1.1
1526 If-None-Match: *
1527 Host: cal.example.com
1528 Content-Type: text/calendar
1529 Content-Length: xxxx
1530
1531 BEGIN:VCALENDAR
1532 VERSION:2.0
1533 PRODID:-//Example Corp.//CalDAV Client//EN
1534 BEGIN:VEVENT
1535 UID:20010712T182145Z-123401@example.com
1536 DTSTAMP:20060712T182145Z
1537 DTSTART:20060714T170000Z
1538 DTEND:20060715T040000Z
1539 SUMMARY:Bastille Day Party
1540 END:VEVENT
1541 END:VCALENDAR
1542
1543 &gt;&gt; Response &lt;&lt;
1544
1545 HTTP/1.1 201 Created
1546 Content-Length: 0
1547 Date: Sat, 11 Nov 2006 09:32:12 GMT
1548 ETag: "123456789-000-111"
1549
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-
1552 Match" header.
1553
1554 As indicated in <a href="http://tools.ietf.org/html/rfc2445#section-3.10">Section&nbsp;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
1558 ".ifb".
1559
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>
1561
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.
1568
1569
1570
1571
1572
1573
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>
1577
1578
1579 The new preconditions are:
1580
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
1584 resources;
1585
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
1589 iCalendar data);
1590
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.);
1597
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;
1602
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;
1610
1611 &lt;!ELEMENT no-uid-conflict (DAV:href)&gt;
1612
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;
1617
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;
1623
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
1627
1628
1629
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>
1633
1634
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;
1638
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;
1645
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;
1651
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;
1658
1659<span class="h4"><h4><a name="section-5.3.3">5.3.3</a>. Non-Standard Components, Properties, and Parameters</h4></span>
1660
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-".
1665
1666 Servers MUST support the use of non-standard components, properties,
1667 and parameters in calendar object resources stored via the PUT
1668 method.
1669
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&nbsp;4.2 of [RFC2445]</a>, e.g., "X-ABC-PRIVATE".
1677
1678<span class="h4"><h4><a name="section-5.3.4">5.3.4</a>. Calendar Object Resource Entity Tag</h4></span>
1679
1680 The DAV:getetag property MUST be defined and set to a strong entity
1681 tag on all calendar object resources.
1682
1683
1684
1685
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>
1689
1690
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.
1694
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.
1705
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.
1714
1715<span class="h2"><h2><a name="section-6">6</a>. Calendaring Access Control</h2></span>
1716
1717<span class="h3"><h3><a name="section-6.1">6.1</a>. Calendaring Privilege</h3></span>
1718
1719 CalDAV servers MUST support and adhere to the requirements of WebDAV
1720 ACL [<a href="http://tools.ietf.org/html/rfc3744" title="&quot;Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol&quot;">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.
1724
1725<span class="h4"><h4><a name="section-6.1.1">6.1.1</a>. CALDAV:read-free-busy Privilege</h4></span>
1726
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.
1732
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.
1738
1739
1740
1741
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>
1745
1746
1747 Servers MUST support this privilege on all calendar collections,
1748 regular collections, and calendar object resources.
1749
1750
1751 &lt;!ELEMENT read-free-busy EMPTY&gt;
1752
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.
1756
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).
1761
1762<span class="h3"><h3><a name="section-6.2">6.2</a>. Additional Principal Property</h3></span>
1763
1764 This section defines an additional property for WebDAV principal
1765 resources, as defined in [<a href="http://tools.ietf.org/html/rfc3744" title="&quot;Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol&quot;">RFC3744</a>].
1766
1767<span class="h4"><h4><a name="section-6.2.1">6.2.1</a>. CALDAV:calendar-home-set Property</h4></span>
1768
1769 Name: calendar-home-set
1770
1771 Namespace: urn:ietf:params:xml:ns:caldav
1772
1773 Purpose: Identifies the URL of any WebDAV collections that contain
1774 calendar collections owned by the associated principal resource.
1775
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>]).
1780
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.
1788
1789 Definition:
1790
1791 &lt;!ELEMENT calendar-home-set (DAV:href*)&gt;
1792
1793
1794
1795
1796
1797
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>
1801
1802
1803 Example:
1804
1805 &lt;C:calendar-home-set xmlns:D="DAV:"
1806 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
1807 &lt;D:href&gt;http://cal.example.com/home/bernard/calendars/&lt;/D:href&gt;
1808 &lt;/C:calendar-home-set&gt;
1809
1810<span class="h2"><h2><a name="section-7">7</a>. Calendaring Reports</h2></span>
1811
1812 This section defines the reports that CalDAV servers MUST support on
1813 calendar collections and calendar object resources.
1814
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&nbsp;3.1.5 of [RFC3253]</a>.
1818 CalDAV servers MAY also advertise support for these reports on
1819 ordinary collections.
1820
1821 Some of these reports allow calendar data (from possibly multiple
1822 resources) to be returned.
1823
1824<span class="h3"><h3><a name="section-7.1">7.1</a>. REPORT Method</h3></span>
1825
1826 The REPORT method (defined in <a href="http://tools.ietf.org/html/rfc3253#section-3.6">Section&nbsp;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
1834 the same request.
1835
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&nbsp;3.8 of [RFC3253]</a>.
1838
1839<span class="h3"><h3><a name="section-7.2">7.2</a>. Ordinary Collections</h3></span>
1840
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.
1848
1849
1850
1851
1852
1853
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>
1857
1858
1859<span class="h3"><h3><a name="section-7.3">7.3</a>. Date and Floating Time</h3></span>
1860
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.
1869
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.
1873
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.
1882
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.
1889
1890<span class="h3"><h3><a name="section-7.4">7.4</a>. Time Range Filtering</h3></span>
1891
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
1897 value types.
1898
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="&quot;Internet Calendaring and Scheduling Core Object Specification (iCalendar)&quot;">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.
1907
1908
1909
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>
1913
1914
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.
1921
1922<span class="h3"><h3><a name="section-7.5">7.5</a>. Searching Text: Collations</h3></span>
1923
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.
1930
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="&quot;Internet Application Protocol Collation Registry&quot;">RFC4790</a>] to specify collations that may be used
1933 to carry out the text comparison operations with a well-defined rule.
1934
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&nbsp;4.2</a>. Collations supported by the server MUST
1937 support "substring" match operations.
1938
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="&quot;Internet Application Protocol Collation Registry&quot;">RFC4790</a>], and MAY support
1941 other collations.
1942
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.
1946
1947 Clients MUST only use collations from the list advertised by the
1948 server.
1949
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&nbsp;3.1</a>), the server MUST default to using
1953 "i;ascii-casemap" as the collation.
1954
1955 Wildcards (as defined in <a href="http://tools.ietf.org/html/rfc4790#section-3.2">[RFC4790], Section&nbsp;3.2</a>) MUST NOT be used in
1956 the collation identifier.
1957
1958 If the client chooses a collation not supported by the server, the
1959 server MUST respond with a CALDAV:supported-collation precondition
1960 error response.
1961
1962
1963
1964
1965
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>
1969
1970
1971<span class="h4"><h4><a name="section-7.5.1">7.5.1</a>. CALDAV:supported-collation-set Property</h4></span>
1972
1973 Name: supported-collation-set
1974
1975 Namespace: urn:ietf:params:xml:ns:caldav
1976
1977 Purpose: Identifies the set of collations supported by the server
1978 for text matching operations.
1979
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&nbsp;12.14.1 of [RFC2518]</a>).
1984
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
1988 server.
1989
1990 Definition:
1991
1992 &lt;!ELEMENT supported-collation-set (supported-collation*)&gt;
1993
1994 &lt;!ELEMENT supported-collation (#PCDATA)&gt;
1995
1996 Example:
1997
1998 &lt;C:supported-collation-set
1999 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2000 &lt;C:supported-collation&gt;i;ascii-casemap&lt;/C:supported-collation&gt;
2001 &lt;C:supported-collation&gt;i;octet&lt;/C:supported-collation&gt;
2002 &lt;/C:supported-collation-set&gt;
2003
2004<span class="h3"><h3><a name="section-7.6">7.6</a>. Partial Retrieval</h3></span>
2005
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
2009 request.
2010
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>.
2017
2018
2019
2020
2021
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>
2025
2026
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".
2031
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.
2042
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>.)
2050
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>.)
2055
2056<span class="h3"><h3><a name="section-7.7">7.7</a>. Non-Standard Components, Properties, and Parameters</h3></span>
2057
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.
2063
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.
2068
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.
2074
2075
2076
2077
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>
2081
2082
2083<span class="h3"><h3><a name="section-7.8">7.8</a>. CALDAV:calendar-query REPORT</h3></span>
2084
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.
2092
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.
2103
2104 Support for the CALDAV:calendar-query REPORT is REQUIRED.
2105
2106 Marshalling:
2107
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>.
2110
2111 The request MAY include a Depth header. If no Depth header is
2112 included, Depth:0 is assumed.
2113
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
2118 empty.
2119
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.
2125
2126 Preconditions:
2127
2128 (CALDAV:supported-calendar-data): The attributes "content-type"
2129 and "version" of the CALDAV:calendar-data XML element (see
2130
2131
2132
2133
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>
2137
2138
2139 <a href="#section-9.6">Section 9.6</a>) specify a media type supported by the server for
2140 calendar object resources.
2141
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 &lt;C:comp name="VEVENT"&gt;
2145 element in a &lt;C:comp name="VTODO"&gt; element, and a CALDAV:filter
2146 cannot nest a &lt;C:time-range start="..." end="..."&gt; element in a
2147 &lt;C:prop name="SUMMARY"&gt; element.
2148
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.
2159
2160 &lt;!ELEMENT supported-filter (comp-filter*,
2161 prop-filter*,
2162 param-filter*)&gt;
2163
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.
2167
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
2172 REPORT request;
2173
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
2178 REPORT request;
2179
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>.
2183
2184
2185
2186
2187
2188
2189
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>
2193
2194
2195 Postconditions:
2196
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.
2202
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>
2204
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.
2216
2217 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
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>
2249
2250
2251 &gt;&gt; Request &lt;&lt;
2252
2253 REPORT /bernard/work/ HTTP/1.1
2254 Host: cal.example.com
2255 Depth: 1
2256 Content-Type: application/xml; charset="utf-8"
2257 Content-Length: xxxx
2258
2259 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2260 &lt;C:calendar-query xmlns:D="DAV:"
2261 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2262 &lt;D:prop&gt;
2263 &lt;D:getetag/&gt;
2264 &lt;C:calendar-data&gt;
2265 &lt;C:comp name="VCALENDAR"&gt;
2266 &lt;C:prop name="VERSION"/&gt;
2267 &lt;C:comp name="VEVENT"&gt;
2268 &lt;C:prop name="SUMMARY"/&gt;
2269 &lt;C:prop name="UID"/&gt;
2270 &lt;C:prop name="DTSTART"/&gt;
2271 &lt;C:prop name="DTEND"/&gt;
2272 &lt;C:prop name="DURATION"/&gt;
2273 &lt;C:prop name="RRULE"/&gt;
2274 &lt;C:prop name="RDATE"/&gt;
2275 &lt;C:prop name="EXRULE"/&gt;
2276 &lt;C:prop name="EXDATE"/&gt;
2277 &lt;C:prop name="RECURRENCE-ID"/&gt;
2278 &lt;/C:comp&gt;
2279 &lt;C:comp name="VTIMEZONE"/&gt;
2280 &lt;/C:comp&gt;
2281 &lt;/C:calendar-data&gt;
2282 &lt;/D:prop&gt;
2283 &lt;C:filter&gt;
2284 &lt;C:comp-filter name="VCALENDAR"&gt;
2285 &lt;C:comp-filter name="VEVENT"&gt;
2286 &lt;C:time-range start="20060104T000000Z"
2287 end="20060105T000000Z"/&gt;
2288 &lt;/C:comp-filter&gt;
2289 &lt;/C:comp-filter&gt;
2290 &lt;/C:filter&gt;
2291 &lt;/C:calendar-query&gt;
2292
2293 &gt;&gt; Response &lt;&lt;
2294
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
2299
2300
2301
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>
2305
2306
2307 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2308 &lt;D:multistatus xmlns:D="DAV:"
2309 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2310 &lt;D:response&gt;
2311 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd2.ics&lt;/D:href&gt;
2312 &lt;D:propstat&gt;
2313 &lt;D:prop&gt;
2314 &lt;D:getetag&gt;"fffff-abcd2"&lt;/D:getetag&gt;
2315 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
2316 VERSION:2.0
2317 BEGIN:VTIMEZONE
2318 LAST-MODIFIED:20040110T032845Z
2319 TZID:US/Eastern
2320 BEGIN:DAYLIGHT
2321 DTSTART:20000404T020000
2322 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
2323 TZNAME:EDT
2324 TZOFFSETFROM:-0500
2325 TZOFFSETTO:-0400
2326 END:DAYLIGHT
2327 BEGIN:STANDARD
2328 DTSTART:20001026T020000
2329 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
2330 TZNAME:EST
2331 TZOFFSETFROM:-0400
2332 TZOFFSETTO:-0500
2333 END:STANDARD
2334 END:VTIMEZONE
2335 BEGIN:VEVENT
2336 DTSTART;TZID=US/Eastern:20060102T120000
2337 DURATION:PT1H
2338 RRULE:FREQ=DAILY;COUNT=5
2339 SUMMARY:Event #2
2340 UID:00959BC664CA650E933C892C@example.com
2341 END:VEVENT
2342 BEGIN:VEVENT
2343 DTSTART;TZID=US/Eastern:20060104T140000
2344 DURATION:PT1H
2345 RECURRENCE-ID;TZID=US/Eastern:20060104T120000
2346 SUMMARY:Event #2 bis
2347 UID:00959BC664CA650E933C892C@example.com
2348 END:VEVENT
2349 BEGIN:VEVENT
2350 DTSTART;TZID=US/Eastern:20060106T140000
2351 DURATION:PT1H
2352 RECURRENCE-ID;TZID=US/Eastern:20060106T120000
2353 SUMMARY:Event #2 bis bis
2354 UID:00959BC664CA650E933C892C@example.com
2355
2356
2357
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>
2361
2362
2363 END:VEVENT
2364 END:VCALENDAR
2365 &lt;/C:calendar-data&gt;
2366 &lt;/D:prop&gt;
2367 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
2368 &lt;/D:propstat&gt;
2369 &lt;/D:response&gt;
2370 &lt;D:response&gt;
2371 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd3.ics&lt;/D:href&gt;
2372 &lt;D:propstat&gt;
2373 &lt;D:prop&gt;
2374 &lt;D:getetag&gt;"fffff-abcd3"&lt;/D:getetag&gt;
2375 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
2376 VERSION:2.0
2377 PRODID:-//Example Corp.//CalDAV Client//EN
2378 BEGIN:VTIMEZONE
2379 LAST-MODIFIED:20040110T032845Z
2380 TZID:US/Eastern
2381 BEGIN:DAYLIGHT
2382 DTSTART:20000404T020000
2383 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
2384 TZNAME:EDT
2385 TZOFFSETFROM:-0500
2386 TZOFFSETTO:-0400
2387 END:DAYLIGHT
2388 BEGIN:STANDARD
2389 DTSTART:20001026T020000
2390 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
2391 TZNAME:EST
2392 TZOFFSETFROM:-0400
2393 TZOFFSETTO:-0500
2394 END:STANDARD
2395 END:VTIMEZONE
2396 BEGIN:VEVENT
2397 DTSTART;TZID=US/Eastern:20060104T100000
2398 DURATION:PT1H
2399 SUMMARY:Event #3
2400 UID:DC6C50A017428C5216A2F1CD@example.com
2401 END:VEVENT
2402 END:VCALENDAR
2403 &lt;/C:calendar-data&gt;
2404 &lt;/D:prop&gt;
2405 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
2406 &lt;/D:propstat&gt;
2407 &lt;/D:response&gt;
2408 &lt;/D:multistatus&gt;
2409
2410
2411
2412
2413
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>
2417
2418
2419<span class="h4"><h4><a name="section-7.8.2">7.8.2</a>. Example: Partial Retrieval of Recurring Events</h4></span>
2420
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.
2430
2431 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
2432
2433 &gt;&gt; Request &lt;&lt;
2434
2435 REPORT /bernard/work/ HTTP/1.1
2436 Host: cal.example.com
2437 Depth: 1
2438 Content-Type: application/xml; charset="utf-8"
2439 Content-Length: xxxx
2440
2441 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2442 &lt;C:calendar-query xmlns:D="DAV:"
2443 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2444 &lt;D:prop&gt;
2445 &lt;C:calendar-data&gt;
2446 &lt;C:limit-recurrence-set start="20060103T000000Z"
2447 end="20060105T000000Z"/&gt;
2448 &lt;/C:calendar-data&gt;
2449 &lt;/D:prop&gt;
2450 &lt;C:filter&gt;
2451 &lt;C:comp-filter name="VCALENDAR"&gt;
2452 &lt;C:comp-filter name="VEVENT"&gt;
2453 &lt;C:time-range start="20060103T000000Z"
2454 end="20060105T000000Z"/&gt;
2455 &lt;/C:comp-filter&gt;
2456 &lt;/C:comp-filter&gt;
2457 &lt;/C:filter&gt;
2458 &lt;/C:calendar-query&gt;
2459
2460 &gt;&gt; Response &lt;&lt;
2461
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
2466
2467
2468
2469
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>
2473
2474
2475 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2476 &lt;D:multistatus xmlns:D="DAV:"
2477 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2478 &lt;D:response&gt;
2479 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd2.ics&lt;/D:href&gt;
2480 &lt;D:propstat&gt;
2481 &lt;D:prop&gt;
2482 &lt;D:getetag&gt;"fffff-abcd2"&lt;/D:getetag&gt;
2483 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
2484 VERSION:2.0
2485 PRODID:-//Example Corp.//CalDAV Client//EN
2486 BEGIN:VTIMEZONE
2487 LAST-MODIFIED:20040110T032845Z
2488 TZID:US/Eastern
2489 BEGIN:DAYLIGHT
2490 DTSTART:20000404T020000
2491 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
2492 TZNAME:EDT
2493 TZOFFSETFROM:-0500
2494 TZOFFSETTO:-0400
2495 END:DAYLIGHT
2496 BEGIN:STANDARD
2497 DTSTART:20001026T020000
2498 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
2499 TZNAME:EST
2500 TZOFFSETFROM:-0400
2501 TZOFFSETTO:-0500
2502 END:STANDARD
2503 END:VTIMEZONE
2504 BEGIN:VEVENT
2505 DTSTAMP:20060206T001121Z
2506 DTSTART;TZID=US/Eastern:20060102T120000
2507 DURATION:PT1H
2508 RRULE:FREQ=DAILY;COUNT=5
2509 SUMMARY:Event #2
2510 UID:00959BC664CA650E933C892C@example.com
2511 END:VEVENT
2512 BEGIN:VEVENT
2513 DTSTAMP:20060206T001121Z
2514 DTSTART;TZID=US/Eastern:20060104T140000
2515 DURATION:PT1H
2516 RECURRENCE-ID;TZID=US/Eastern:20060104T120000
2517 SUMMARY:Event #2 bis
2518 UID:00959BC664CA650E933C892C@example.com
2519 END:VEVENT
2520 END:VCALENDAR
2521 &lt;/C:calendar-data&gt;
2522 &lt;/D:prop&gt;
2523
2524
2525
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>
2529
2530
2531 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
2532 &lt;/D:propstat&gt;
2533 &lt;/D:response&gt;
2534 &lt;D:response&gt;
2535 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd3.ics&lt;/D:href&gt;
2536 &lt;D:propstat&gt;
2537 &lt;D:prop&gt;
2538 &lt;D:getetag&gt;"fffff-abcd3"&lt;/D:getetag&gt;
2539 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
2540 VERSION:2.0
2541 PRODID:-//Example Corp.//CalDAV Client//EN
2542 BEGIN:VTIMEZONE
2543 LAST-MODIFIED:20040110T032845Z
2544 TZID:US/Eastern
2545 BEGIN:DAYLIGHT
2546 DTSTART:20000404T020000
2547 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
2548 TZNAME:EDT
2549 TZOFFSETFROM:-0500
2550 TZOFFSETTO:-0400
2551 END:DAYLIGHT
2552 BEGIN:STANDARD
2553 DTSTART:20001026T020000
2554 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
2555 TZNAME:EST
2556 TZOFFSETFROM:-0400
2557 TZOFFSETTO:-0500
2558 END:STANDARD
2559 END:VTIMEZONE
2560 BEGIN:VEVENT
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
2565 DURATION:PT1H
2566 LAST-MODIFIED:20060206T001330Z
2567 ORGANIZER:mailto:cyrus@example.com
2568 SEQUENCE:1
2569 STATUS:TENTATIVE
2570 SUMMARY:Event #3
2571 UID:DC6C50A017428C5216A2F1CD@example.com
2572 X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com
2573 END:VEVENT
2574 END:VCALENDAR
2575 &lt;/C:calendar-data&gt;
2576 &lt;/D:prop&gt;
2577 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
2578 &lt;/D:propstat&gt;
2579
2580
2581
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>
2585
2586
2587 &lt;/D:response&gt;
2588 &lt;/D:multistatus&gt;
2589
2590<span class="h4"><h4><a name="section-7.8.3">7.8.3</a>. Example: Expanded Retrieval of Recurring Events</h4></span>
2591
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.
2599
2600 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
2601
2602 &gt;&gt; Request &lt;&lt;
2603
2604 REPORT /bernard/work/ HTTP/1.1
2605 Host: cal.example.com
2606 Depth: 1
2607 Content-Type: application/xml; charset="utf-8"
2608 Content-Length: xxxx
2609
2610 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2611 &lt;C:calendar-query xmlns:D="DAV:"
2612 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2613 &lt;D:prop&gt;
2614 &lt;C:calendar-data&gt;
2615 &lt;C:expand start="20060103T000000Z"
2616 end="20060105T000000Z"/&gt;
2617 &lt;/C:calendar-data&gt;
2618 &lt;/D:prop&gt;
2619 &lt;C:filter&gt;
2620 &lt;C:comp-filter name="VCALENDAR"&gt;
2621 &lt;C:comp-filter name="VEVENT"&gt;
2622 &lt;C:time-range start="20060103T000000Z"
2623 end="20060105T000000Z"/&gt;
2624 &lt;/C:comp-filter&gt;
2625 &lt;/C:comp-filter&gt;
2626 &lt;/C:filter&gt;
2627 &lt;/C:calendar-query&gt;
2628
2629 &gt;&gt; Response &lt;&lt;
2630
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
2635
2636
2637
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>
2641
2642
2643 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2644 &lt;D:multistatus xmlns:D="DAV:"
2645 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2646 &lt;D:response&gt;
2647 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd2.ics&lt;/D:href&gt;
2648 &lt;D:propstat&gt;
2649 &lt;D:prop&gt;
2650 &lt;D:getetag&gt;"fffff-abcd2"&lt;/D:getetag&gt;
2651 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
2652 VERSION:2.0
2653 PRODID:-//Example Corp.//CalDAV Client//EN
2654 BEGIN:VEVENT
2655 DTSTAMP:20060206T001121Z
2656 DTSTART:20060103T170000
2657 DURATION:PT1H
2658 RECURRENCE-ID:20060103T170000
2659 SUMMARY:Event #2
2660 UID:00959BC664CA650E933C892C@example.com
2661 END:VEVENT
2662 BEGIN:VEVENT
2663 DTSTAMP:20060206T001121Z
2664 DTSTART:20060104T190000
2665 DURATION:PT1H
2666 RECURRENCE-ID:20060104T170000
2667 SUMMARY:Event #2 bis
2668 UID:00959BC664CA650E933C892C@example.com
2669 END:VEVENT
2670 END:VCALENDAR
2671 &lt;/C:calendar-data&gt;
2672 &lt;/D:prop&gt;
2673 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
2674 &lt;/D:propstat&gt;
2675 &lt;/D:response&gt;
2676 &lt;D:response&gt;
2677 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd3.ics&lt;/D:href&gt;
2678 &lt;D:propstat&gt;
2679 &lt;D:prop&gt;
2680 &lt;D:getetag&gt;"fffff-abcd3"&lt;/D:getetag&gt;
2681 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
2682 VERSION:2.0
2683 PRODID:-//Example Corp.//CalDAV Client//EN
2684 BEGIN:VEVENT
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
2689 DURATION:PT1H
2690 LAST-MODIFIED:20060206T001330Z
2691
2692
2693
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>
2697
2698
2699 ORGANIZER:mailto:cyrus@example.com
2700 SEQUENCE:1
2701 STATUS:TENTATIVE
2702 SUMMARY:Event #3
2703 UID:DC6C50A017428C5216A2F1CD@example.com
2704 X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com
2705 END:VEVENT
2706 END:VCALENDAR
2707 &lt;/C:calendar-data&gt;
2708 &lt;/D:prop&gt;
2709 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
2710 &lt;/D:propstat&gt;
2711 &lt;/D:response&gt;
2712 &lt;/D:multistatus&gt;
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
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>
2753
2754
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>
2756
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.
2765
2766 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
2767
2768 &gt;&gt; Request &lt;&lt;
2769
2770 REPORT /bernard/work/ HTTP/1.1
2771 Host: cal.example.com
2772 Depth: 1
2773 Content-Type: application/xml; charset="utf-8"
2774 Content-Length: xxxx
2775
2776 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2777 &lt;C:calendar-query xmlns:D="DAV:"
2778 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2779 &lt;D:prop&gt;
2780 &lt;C:calendar-data&gt;
2781 &lt;C:limit-freebusy-set start="20060102T000000Z"
2782 end="20060103T000000Z"/&gt;
2783 &lt;/C:calendar-data&gt;
2784 &lt;/D:prop&gt;
2785 &lt;C:filter&gt;
2786 &lt;C:comp-filter name="VCALENDAR"&gt;
2787 &lt;C:comp-filter name="VFREEBUSY"&gt;
2788 &lt;C:time-range start="20060102T000000Z"
2789 end="20060103T000000Z"/&gt;
2790 &lt;/C:comp-filter&gt;
2791 &lt;/C:comp-filter&gt;
2792 &lt;/C:filter&gt;
2793 &lt;/C:calendar-query&gt;
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
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>
2809
2810
2811 &gt;&gt; Response &lt;&lt;
2812
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
2817
2818 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2819 &lt;D:multistatus xmlns:D="DAV:"
2820 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2821 &lt;D:response&gt;
2822 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd8.ics&lt;/D:href&gt;
2823 &lt;D:propstat&gt;
2824 &lt;D:prop&gt;
2825 &lt;D:getetag&gt;"fffff-abcd8"&lt;/D:getetag&gt;
2826 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
2827 VERSION:2.0
2828 PRODID:-//Example Corp.//CalDAV Client//EN
2829 BEGIN:VFREEBUSY
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
2836 END:VFREEBUSY
2837 END:VCALENDAR
2838 &lt;/C:calendar-data&gt;
2839 &lt;/D:prop&gt;
2840 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
2841 &lt;/D:propstat&gt;
2842 &lt;/D:response&gt;
2843 &lt;/D:multistatus&gt;
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
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>
2865
2866
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>
2868
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
2871 range.
2872
2873 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
2874
2875 &gt;&gt; Request &lt;&lt;
2876
2877 REPORT /bernard/work/ HTTP/1.1
2878 Host: cal.example.com
2879 Depth: 1
2880 Content-Type: application/xml; charset="utf-8"
2881 Content-Length: xxxx
2882
2883 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2884 &lt;C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2885 &lt;D:prop xmlns:D="DAV:"&gt;
2886 &lt;D:getetag/&gt;
2887 &lt;C:calendar-data/&gt;
2888 &lt;/D:prop&gt;
2889 &lt;C:filter&gt;
2890 &lt;C:comp-filter name="VCALENDAR"&gt;
2891 &lt;C:comp-filter name="VTODO"&gt;
2892 &lt;C:comp-filter name="VALARM"&gt;
2893 &lt;C:time-range start="20060106T100000Z"
2894 end="20060107T100000Z"/&gt;
2895 &lt;/C:comp-filter&gt;
2896 &lt;/C:comp-filter&gt;
2897 &lt;/C:comp-filter&gt;
2898 &lt;/C:filter&gt;
2899 &lt;/C:calendar-query&gt;
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
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>
2921
2922
2923 &gt;&gt; Response &lt;&lt;
2924
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
2929
2930 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2931 &lt;D:multistatus xmlns:D="DAV:"
2932 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2933 &lt;D:response&gt;
2934 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd4.ics&lt;/D:href&gt;
2935 &lt;D:propstat&gt;
2936 &lt;D:prop&gt;
2937 &lt;D:getetag&gt;"fffff-abcd4"&lt;/D:getetag&gt;
2938 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
2939 VERSION:2.0
2940 PRODID:-//Example Corp.//CalDAV Client//EN
2941 BEGIN:VTODO
2942 DTSTAMP:20060205T235300Z
2943 DUE;TZID=US/Eastern:20060106T120000
2944 LAST-MODIFIED:20060205T235308Z
2945 SEQUENCE:1
2946 STATUS:NEEDS-ACTION
2947 SUMMARY:Task #2
2948 UID:E10BA47467C5C69BB74E8720@example.com
2949 BEGIN:VALARM
2950 ACTION:AUDIO
2951 TRIGGER;RELATED=START:-PT10M
2952 END:VALARM
2953 END:VTODO
2954 END:VCALENDAR
2955 &lt;/C:calendar-data&gt;
2956 &lt;/D:prop&gt;
2957 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
2958 &lt;/D:propstat&gt;
2959 &lt;/D:response&gt;
2960 &lt;/D:multistatus&gt;
2961
2962<span class="h4"><h4><a name="section-7.8.6">7.8.6</a>. Example: Retrieval of Event by UID</h4></span>
2963
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".
2967
2968 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
2969
2970
2971
2972
2973
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>
2977
2978
2979 &gt;&gt; Request &lt;&lt;
2980
2981 REPORT /bernard/work/ HTTP/1.1
2982 Host: cal.example.com
2983 Depth: 1
2984 Content-Type: application/xml; charset="utf-8"
2985 Content-Length: xxxx
2986
2987 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
2988 &lt;C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
2989 &lt;D:prop xmlns:D="DAV:"&gt;
2990 &lt;D:getetag/&gt;
2991 &lt;C:calendar-data/&gt;
2992 &lt;/D:prop&gt;
2993 &lt;C:filter&gt;
2994 &lt;C:comp-filter name="VCALENDAR"&gt;
2995 &lt;C:comp-filter name="VEVENT"&gt;
2996 &lt;C:prop-filter name="UID"&gt;
2997 &lt;C:text-match collation="i;octet"
2998 &gt;DC6C50A017428C5216A2F1CD@example.com&lt;/C:text-match&gt;
2999 &lt;/C:prop-filter&gt;
3000 &lt;/C:comp-filter&gt;
3001 &lt;/C:comp-filter&gt;
3002 &lt;/C:filter&gt;
3003 &lt;/C:calendar-query&gt;
3004
3005 &gt;&gt; Response &lt;&lt;
3006
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
3011
3012 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3013 &lt;D:multistatus xmlns:D="DAV:"
3014 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3015 &lt;D:response&gt;
3016 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd3.ics&lt;/D:href&gt;
3017 &lt;D:propstat&gt;
3018 &lt;D:prop&gt;
3019 &lt;D:getetag&gt;"fffff-abcd3"&lt;/D:getetag&gt;
3020 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
3021 VERSION:2.0
3022 PRODID:-//Example Corp.//CalDAV Client//EN
3023 BEGIN:VTIMEZONE
3024 LAST-MODIFIED:20040110T032845Z
3025 TZID:US/Eastern
3026 BEGIN:DAYLIGHT
3027
3028
3029
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>
3033
3034
3035 DTSTART:20000404T020000
3036 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
3037 TZNAME:EDT
3038 TZOFFSETFROM:-0500
3039 TZOFFSETTO:-0400
3040 END:DAYLIGHT
3041 BEGIN:STANDARD
3042 DTSTART:20001026T020000
3043 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
3044 TZNAME:EST
3045 TZOFFSETFROM:-0400
3046 TZOFFSETTO:-0500
3047 END:STANDARD
3048 END:VTIMEZONE
3049 BEGIN:VEVENT
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
3054 DURATION:PT1H
3055 LAST-MODIFIED:20060206T001330Z
3056 ORGANIZER:mailto:cyrus@example.com
3057 SEQUENCE:1
3058 STATUS:TENTATIVE
3059 SUMMARY:Event #3
3060 UID:DC6C50A017428C5216A2F1CD@example.com
3061 X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com
3062 END:VEVENT
3063 END:VCALENDAR
3064 &lt;/C:calendar-data&gt;
3065 &lt;/D:prop&gt;
3066 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
3067 &lt;/D:propstat&gt;
3068 &lt;/D:response&gt;
3069 &lt;/D:multistatus&gt;
3070
3071<span class="h4"><h4><a name="section-7.8.7">7.8.7</a>. Example: Retrieval of Events by PARTSTAT</h4></span>
3072
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
3076 to NEEDS-ACTION.
3077
3078 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
3079
3080
3081
3082
3083
3084
3085
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>
3089
3090
3091 &gt;&gt; Request &lt;&lt;
3092
3093 REPORT /bernard/work/ HTTP/1.1
3094 Host: cal.example.com
3095 Depth: 1
3096 Content-Type: application/xml; charset="utf-8"
3097 Content-Length: xxxx
3098
3099 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3100 &lt;C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3101 &lt;D:prop xmlns:D="DAV:"&gt;
3102 &lt;D:getetag/&gt;
3103 &lt;C:calendar-data/&gt;
3104 &lt;/D:prop&gt;
3105 &lt;C:filter&gt;
3106 &lt;C:comp-filter name="VCALENDAR"&gt;
3107 &lt;C:comp-filter name="VEVENT"&gt;
3108 &lt;C:prop-filter name="ATTENDEE"&gt;
3109 &lt;C:text-match collation="i;ascii-casemap"
3110 &gt;mailto:lisa@example.com&lt;/C:text-match&gt;
3111 &lt;C:param-filter name="PARTSTAT"&gt;
3112 &lt;C:text-match collation="i;ascii-casemap"
3113 &gt;NEEDS-ACTION&lt;/C:text-match&gt;
3114 &lt;/C:param-filter&gt;
3115 &lt;/C:prop-filter&gt;
3116 &lt;/C:comp-filter&gt;
3117 &lt;/C:comp-filter&gt;
3118 &lt;/C:filter&gt;
3119 &lt;/C:calendar-query&gt;
3120
3121 &gt;&gt; Response &lt;&lt;
3122
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
3127
3128 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3129 &lt;D:multistatus xmlns:D="DAV:"
3130 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3131 &lt;D:response&gt;
3132 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd3.ics&lt;/D:href&gt;
3133 &lt;D:propstat&gt;
3134 &lt;D:prop&gt;
3135 &lt;D:getetag&gt;"fffff-abcd3"&lt;/D:getetag&gt;
3136 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
3137 VERSION:2.0
3138 PRODID:-//Example Corp.//CalDAV Client//EN
3139
3140
3141
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>
3145
3146
3147 BEGIN:VTIMEZONE
3148 LAST-MODIFIED:20040110T032845Z
3149 TZID:US/Eastern
3150 BEGIN:DAYLIGHT
3151 DTSTART:20000404T020000
3152 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
3153 TZNAME:EDT
3154 TZOFFSETFROM:-0500
3155 TZOFFSETTO:-0400
3156 END:DAYLIGHT
3157 BEGIN:STANDARD
3158 DTSTART:20001026T020000
3159 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
3160 TZNAME:EST
3161 TZOFFSETFROM:-0400
3162 TZOFFSETTO:-0500
3163 END:STANDARD
3164 END:VTIMEZONE
3165 BEGIN:VEVENT
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
3170 DURATION:PT1H
3171 LAST-MODIFIED:20060206T001330Z
3172 ORGANIZER:mailto:cyrus@example.com
3173 SEQUENCE:1
3174 STATUS:TENTATIVE
3175 SUMMARY:Event #3
3176 UID:DC6C50A017428C5216A2F1CD@example.com
3177 X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com
3178 END:VEVENT
3179 END:VCALENDAR
3180 &lt;/C:calendar-data&gt;
3181 &lt;/D:prop&gt;
3182 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
3183 &lt;/D:propstat&gt;
3184 &lt;/D:response&gt;
3185 &lt;/D:multistatus&gt;
3186
3187<span class="h4"><h4><a name="section-7.8.8">7.8.8</a>. Example: Retrieval of Events Only</h4></span>
3188
3189 In this example, the client requests the server to return all VEVENT
3190 components.
3191
3192 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
3193
3194
3195
3196
3197
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>
3201
3202
3203 &gt;&gt; Request &lt;&lt;
3204
3205 REPORT /bernard/work/ HTTP/1.1
3206 Host: cal.example.com
3207 Depth: 1
3208 Content-Type: application/xml; charset="utf-8"
3209 Content-Length: xxxx
3210
3211 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3212 &lt;C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3213 &lt;D:prop xmlns:D="DAV:"&gt;
3214 &lt;D:getetag/&gt;
3215 &lt;C:calendar-data/&gt;
3216 &lt;/D:prop&gt;
3217 &lt;C:filter&gt;
3218 &lt;C:comp-filter name="VCALENDAR"&gt;
3219 &lt;C:comp-filter name="VEVENT"/&gt;
3220 &lt;/C:comp-filter&gt;
3221 &lt;/C:filter&gt;
3222 &lt;/C:calendar-query&gt;
3223
3224 &gt;&gt; Response &lt;&lt;
3225
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
3230
3231 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3232 &lt;D:multistatus xmlns:D="DAV:"
3233 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3234 &lt;D:response&gt;
3235 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd1.ics&lt;/D:href&gt;
3236 &lt;D:propstat&gt;
3237 &lt;D:prop&gt;
3238 &lt;D:getetag&gt;"fffff-abcd1"&lt;/D:getetag&gt;
3239 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
3240 VERSION:2.0
3241 PRODID:-//Example Corp.//CalDAV Client//EN
3242 BEGIN:VTIMEZONE
3243 LAST-MODIFIED:20040110T032845Z
3244 TZID:US/Eastern
3245 BEGIN:DAYLIGHT
3246 DTSTART:20000404T020000
3247 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
3248 TZNAME:EDT
3249 TZOFFSETFROM:-0500
3250 TZOFFSETTO:-0400
3251
3252
3253
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>
3257
3258
3259 END:DAYLIGHT
3260 BEGIN:STANDARD
3261 DTSTART:20001026T020000
3262 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
3263 TZNAME:EST
3264 TZOFFSETFROM:-0400
3265 TZOFFSETTO:-0500
3266 END:STANDARD
3267 END:VTIMEZONE
3268 BEGIN:VEVENT
3269 DTSTAMP:20060206T001102Z
3270 DTSTART;TZID=US/Eastern:20060102T100000
3271 DURATION:PT1H
3272 SUMMARY:Event #1
3273 Description:Go Steelers!
3274 UID:74855313FA803DA593CD579A@example.com
3275 END:VEVENT
3276 END:VCALENDAR
3277 &lt;/C:calendar-data&gt;
3278 &lt;/D:prop&gt;
3279 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
3280 &lt;/D:propstat&gt;
3281 &lt;/D:response&gt;
3282 &lt;D:response&gt;
3283 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd2.ics&lt;/D:href&gt;
3284 &lt;D:propstat&gt;
3285 &lt;D:prop&gt;
3286 &lt;D:getetag&gt;"fffff-abcd2"&lt;/D:getetag&gt;
3287 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
3288 VERSION:2.0
3289 PRODID:-//Example Corp.//CalDAV Client//EN
3290 BEGIN:VTIMEZONE
3291 LAST-MODIFIED:20040110T032845Z
3292 TZID:US/Eastern
3293 BEGIN:DAYLIGHT
3294 DTSTART:20000404T020000
3295 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
3296 TZNAME:EDT
3297 TZOFFSETFROM:-0500
3298 TZOFFSETTO:-0400
3299 END:DAYLIGHT
3300 BEGIN:STANDARD
3301 DTSTART:20001026T020000
3302 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
3303 TZNAME:EST
3304 TZOFFSETFROM:-0400
3305 TZOFFSETTO:-0500
3306 END:STANDARD
3307
3308
3309
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>
3313
3314
3315 END:VTIMEZONE
3316 BEGIN:VEVENT
3317 DTSTAMP:20060206T001121Z
3318 DTSTART;TZID=US/Eastern:20060102T120000
3319 DURATION:PT1H
3320 RRULE:FREQ=DAILY;COUNT=5
3321 SUMMARY:Event #2
3322 UID:00959BC664CA650E933C892C@example.com
3323 END:VEVENT
3324 BEGIN:VEVENT
3325 DTSTAMP:20060206T001121Z
3326 DTSTART;TZID=US/Eastern:20060104T140000
3327 DURATION:PT1H
3328 RECURRENCE-ID;TZID=US/Eastern:20060104T120000
3329 SUMMARY:Event #2 bis
3330 UID:00959BC664CA650E933C892C@example.com
3331 END:VEVENT
3332 BEGIN:VEVENT
3333 DTSTAMP:20060206T001121Z
3334 DTSTART;TZID=US/Eastern:20060106T140000
3335 DURATION:PT1H
3336 RECURRENCE-ID;TZID=US/Eastern:20060106T120000
3337 SUMMARY:Event #2 bis bis
3338 UID:00959BC664CA650E933C892C@example.com
3339 END:VEVENT
3340 END:VCALENDAR
3341 &lt;/C:calendar-data&gt;
3342 &lt;/D:prop&gt;
3343 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
3344 &lt;/D:propstat&gt;
3345 &lt;/D:response&gt;
3346 &lt;D:response&gt;
3347 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd3.ics&lt;/D:href&gt;
3348 &lt;D:propstat&gt;
3349 &lt;D:prop&gt;
3350 &lt;D:getetag&gt;"fffff-abcd3"&lt;/D:getetag&gt;
3351 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
3352 VERSION:2.0
3353 PRODID:-//Example Corp.//CalDAV Client//EN
3354 BEGIN:VTIMEZONE
3355 LAST-MODIFIED:20040110T032845Z
3356 TZID:US/Eastern
3357 BEGIN:DAYLIGHT
3358 DTSTART:20000404T020000
3359 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
3360 TZNAME:EDT
3361 TZOFFSETFROM:-0500
3362 TZOFFSETTO:-0400
3363
3364
3365
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>
3369
3370
3371 END:DAYLIGHT
3372 BEGIN:STANDARD
3373 DTSTART:20001026T020000
3374 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
3375 TZNAME:EST
3376 TZOFFSETFROM:-0400
3377 TZOFFSETTO:-0500
3378 END:STANDARD
3379 END:VTIMEZONE
3380 BEGIN:VEVENT
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
3385 DURATION:PT1H
3386 LAST-MODIFIED:20060206T001330Z
3387 ORGANIZER:mailto:cyrus@example.com
3388 SEQUENCE:1
3389 STATUS:TENTATIVE
3390 SUMMARY:Event #3
3391 UID:DC6C50A017428C5216A2F1CD@example.com
3392 X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com
3393 END:VEVENT
3394 END:VCALENDAR
3395 &lt;/C:calendar-data&gt;
3396 &lt;/D:prop&gt;
3397 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
3398 &lt;/D:propstat&gt;
3399 &lt;/D:response&gt;
3400 &lt;/D:multistatus&gt;
3401
3402<span class="h4"><h4><a name="section-7.8.9">7.8.9</a>. Example: Retrieval of All Pending To-Dos</h4></span>
3403
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.
3408
3409 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
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>
3425
3426
3427 &gt;&gt; Request &lt;&lt;
3428
3429 REPORT /bernard/work/ HTTP/1.1
3430 Host: cal.example.com
3431 Depth: 1
3432 Content-Type: application/xml; charset="utf-8"
3433 Content-Length: xxxx
3434
3435 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3436 &lt;C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3437 &lt;D:prop xmlns:D="DAV:"&gt;
3438 &lt;D:getetag/&gt;
3439 &lt;C:calendar-data/&gt;
3440 &lt;/D:prop&gt;
3441 &lt;C:filter&gt;
3442 &lt;C:comp-filter name="VCALENDAR"&gt;
3443 &lt;C:comp-filter name="VTODO"&gt;
3444 &lt;C:prop-filter name="COMPLETED"&gt;
3445 &lt;C:is-not-defined/&gt;
3446 &lt;/C:prop-filter&gt;
3447 &lt;C:prop-filter name="STATUS"&gt;
3448 &lt;C:text-match
3449 negate-condition="yes"&gt;CANCELLED&lt;/C:text-match&gt;
3450 &lt;/C:prop-filter&gt;
3451 &lt;/C:comp-filter&gt;
3452 &lt;/C:comp-filter&gt;
3453 &lt;/C:filter&gt;
3454 &lt;/C:calendar-query&gt;
3455
3456 &gt;&gt; Response &lt;&lt;
3457
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
3462
3463 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3464 &lt;D:multistatus xmlns:D="DAV:"
3465 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3466 &lt;D:response&gt;
3467 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd4.ics&lt;/D:href&gt;
3468 &lt;D:propstat&gt;
3469 &lt;D:prop&gt;
3470 &lt;D:getetag&gt;"fffff-abcd4"&lt;/D:getetag&gt;
3471 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
3472 VERSION:2.0
3473 PRODID:-//Example Corp.//CalDAV Client//EN
3474 BEGIN:VTODO
3475
3476
3477
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>
3481
3482
3483 DTSTAMP:20060205T235335Z
3484 DUE;VALUE=DATE:20060104
3485 STATUS:NEEDS-ACTION
3486 SUMMARY:Task #1
3487 UID:DDDEEB7915FA61233B861457@example.com
3488 BEGIN:VALARM
3489 ACTION:AUDIO
3490 TRIGGER;RELATED=START:-PT10M
3491 END:VALARM
3492 END:VTODO
3493 END:VCALENDAR
3494 &lt;/C:calendar-data&gt;
3495 &lt;/D:prop&gt;
3496 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
3497 &lt;/D:propstat&gt;
3498 &lt;/D:response&gt;
3499
3500 &lt;D:response&gt;
3501 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd5.ics&lt;/D:href&gt;
3502 &lt;D:propstat&gt;
3503 &lt;D:prop&gt;
3504 &lt;D:getetag&gt;"fffff-abcd5"&lt;/D:getetag&gt;
3505 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
3506 VERSION:2.0
3507 PRODID:-//Example Corp.//CalDAV Client//EN
3508 BEGIN:VTODO
3509 DTSTAMP:20060205T235300Z
3510 DUE;VALUE=DATE:20060106
3511 LAST-MODIFIED:20060205T235308Z
3512 SEQUENCE:1
3513 STATUS:NEEDS-ACTION
3514 SUMMARY:Task #2
3515 UID:E10BA47467C5C69BB74E8720@example.com
3516 BEGIN:VALARM
3517 ACTION:AUDIO
3518 TRIGGER;RELATED=START:-PT10M
3519 END:VALARM
3520 END:VTODO
3521 END:VCALENDAR
3522 &lt;/C:calendar-data&gt;
3523 &lt;/D:prop&gt;
3524 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
3525 &lt;/D:propstat&gt;
3526 &lt;/D:response&gt;
3527 &lt;/D:multistatus&gt;
3528
3529
3530
3531
3532
3533
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>
3537
3538
3539<span class="h4"><h4><a name="section-7.8.10">7.8.10</a>. Example: Attempt to Query Unsupported Property</h4></span>
3540
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.
3545
3546 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
3547
3548 &gt;&gt; Request &lt;&lt;
3549
3550 REPORT /bernard/work/ HTTP/1.1
3551 Host: cal.example.com
3552 Depth: 1
3553 Content-Type: application/xml; charset="utf-8"
3554 Content-Length: xxxx
3555
3556 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3557 &lt;C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3558 &lt;D:prop xmlns:D="DAV:"&gt;
3559 &lt;D:getetag/&gt;
3560 &lt;C:calendar-data/&gt;
3561 &lt;/D:prop&gt;
3562 &lt;C:filter&gt;
3563 &lt;C:comp-filter name="VCALENDAR"&gt;
3564 &lt;C:comp-filter name="VEVENT"&gt;
3565 &lt;C:prop-filter name="X-ABC-GUID"&gt;
3566 &lt;C:text-match&gt;ABC&lt;/C:text-match&gt;
3567 &lt;/C:prop-filter&gt;
3568 &lt;/C:comp-filter&gt;
3569 &lt;/C:comp-filter&gt;
3570 &lt;/C:filter&gt;
3571 &lt;/C:calendar-query&gt;
3572
3573 &gt;&gt; Response &lt;&lt;
3574
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
3579
3580 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3581 &lt;D:error&gt;
3582 &lt;C:supported-filter&gt;
3583 &lt;C:prop-filter name="X-ABC-GUID"/&gt;
3584 &lt;/C:supported-filter&gt;
3585 &lt;/D:error&gt;
3586
3587
3588
3589
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>
3593
3594
3595<span class="h3"><h3><a name="section-7.9">7.9</a>. CALDAV:calendar-multiget REPORT</h3></span>
3596
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.
3605
3606 Support for the CALDAV:calendar-multiget REPORT is REQUIRED.
3607
3608 Marshalling:
3609
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.
3619
3620 The response body for a successful request MUST be a DAV:
3621 multistatus XML element.
3622
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.
3628
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
3632 element.
3633
3634 Preconditions:
3635
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.
3640
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
3643
3644
3645
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>
3649
3650
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
3653 REPORT request;
3654
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
3659 REPORT request;
3660
3661 Postconditions:
3662
3663 None.
3664
3665<span class="h4"><h4><a name="section-7.9.1">7.9.1</a>. Example: Successful CALDAV:calendar-multiget REPORT</h4></span>
3666
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.
3673
3674 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
3675
3676 &gt;&gt; Request &lt;&lt;
3677
3678 REPORT /bernard/work/ HTTP/1.1
3679 Host: cal.example.com
3680 Content-Type: application/xml; charset="utf-8"
3681 Content-Length: xxxx
3682
3683 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3684 &lt;C:calendar-multiget xmlns:D="DAV:"
3685 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3686 &lt;D:prop&gt;
3687 &lt;D:getetag/&gt;
3688 &lt;C:calendar-data/&gt;
3689 &lt;/D:prop&gt;
3690 &lt;D:href&gt;/bernard/work/abcd1.ics&lt;/D:href&gt;
3691 &lt;D:href&gt;/bernard/work/mtg1.ics&lt;/D:href&gt;
3692 &lt;/C:calendar-multiget&gt;
3693
3694 &gt;&gt; Response &lt;&lt;
3695
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"
3699
3700
3701
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>
3705
3706
3707 Content-Length: xxxx
3708
3709 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3710 &lt;D:multistatus xmlns:D="DAV:"
3711 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3712 &lt;D:response&gt;
3713 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd1.ics&lt;/D:href&gt;
3714 &lt;D:propstat&gt;
3715 &lt;D:prop&gt;
3716 &lt;D:getetag&gt;"fffff-abcd1"&lt;/D:getetag&gt;
3717 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
3718 VERSION:2.0
3719 PRODID:-//Example Corp.//CalDAV Client//EN
3720 BEGIN:VTIMEZONE
3721 LAST-MODIFIED:20040110T032845Z
3722 TZID:US/Eastern
3723 BEGIN:DAYLIGHT
3724 DTSTART:20000404T020000
3725 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
3726 TZNAME:EDT
3727 TZOFFSETFROM:-0500
3728 TZOFFSETTO:-0400
3729 END:DAYLIGHT
3730 BEGIN:STANDARD
3731 DTSTART:20001026T020000
3732 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
3733 TZNAME:EST
3734 TZOFFSETFROM:-0400
3735 TZOFFSETTO:-0500
3736 END:STANDARD
3737 END:VTIMEZONE
3738 BEGIN:VEVENT
3739 DTSTAMP:20060206T001102Z
3740 DTSTART;TZID=US/Eastern:20060102T100000
3741 DURATION:PT1H
3742 SUMMARY:Event #1
3743 Description:Go Steelers!
3744 UID:74855313FA803DA593CD579A@example.com
3745 END:VEVENT
3746 END:VCALENDAR
3747 &lt;/C:calendar-data&gt;
3748 &lt;/D:prop&gt;
3749 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
3750 &lt;/D:propstat&gt;
3751 &lt;/D:response&gt;
3752 &lt;D:response&gt;
3753 &lt;D:href&gt;http://cal.example.com/bernard/work/mtg1.ics&lt;/D:href&gt;
3754 &lt;D:status&gt;HTTP/1.1 404 Not Found&lt;/D:status&gt;
3755
3756
3757
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>
3761
3762
3763 &lt;/D:response&gt;
3764 &lt;/D:multistatus&gt;
3765
3766<span class="h3"><h3><a name="section-7.10">7.10</a>. CALDAV:free-busy-query REPORT</h3></span>
3767
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.
3772
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.
3776
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:
3781
3782 +---------------------------++------------------+
3783 | VEVENT || VFREEBUSY |
3784 +-------------+-------------++------------------+
3785 | TRANSP | STATUS || FBTYPE |
3786 +=============+=============++==================+
3787 | | CONFIRMED || BUSY |
3788 | | (default) || |
3789 | OPAQUE +-------------++------------------+
3790 | (default) | CANCELLED || FREE |
3791 | +-------------++------------------+
3792 | | TENTATIVE || BUSY-TENTATIVE |
3793 | +-------------++------------------+
3794 | | x-name || BUSY or |
3795 | | || x-name |
3796 +-------------+-------------++------------------+
3797 | | CONFIRMED || |
3798 | TRANSPARENT | CANCELLED || FREE |
3799 | | TENTATIVE || |
3800 | | x-name || |
3801 +-------------+-------------++------------------+
3802
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
3807 MAY overlap.
3808
3809 Support for the CALDAV:free-busy-query REPORT is REQUIRED.
3810
3811
3812
3813
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>
3817
3818
3819 Marshalling:
3820
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>.
3824
3825 The request MAY include a Depth header. If no Depth header is
3826 included, Depth:0 is assumed.
3827
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.
3838
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-
3844 busy privilege.
3845
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.
3850
3851 Preconditions:
3852
3853 None.
3854
3855 Postconditions:
3856
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
3862 the response.
3863
3864
3865
3866
3867
3868
3869
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>
3873
3874
3875<span class="h4"><h4><a name="section-7.10.1">7.10.1</a>. Example: Successful CALDAV:free-busy-query REPORT</h4></span>
3876
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.
3882
3883 See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example.
3884
3885 &gt;&gt; Request &lt;&lt;
3886
3887 REPORT /bernard/work/ HTTP/1.1
3888 Host: cal.example.com
3889 Depth: 1
3890 Content-Type: application/xml; charset="utf-8"
3891 Content-Length: xxxx
3892
3893 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
3894 &lt;C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
3895 &lt;C:time-range start="20060104T140000Z"
3896 end="20060105T220000Z"/&gt;
3897 &lt;/C:free-busy-query&gt;
3898
3899 &gt;&gt; Response &lt;&lt;
3900
3901 HTTP/1.1 200 OK
3902 Date: Sat, 11 Nov 2006 09:32:12 GMT
3903 Content-Type: text/calendar
3904 Content-Length: xxxx
3905
3906 BEGIN:VCALENDAR
3907 VERSION:2.0
3908 PRODID:-//Example Corp.//CalDAV Server//EN
3909 BEGIN:VFREEBUSY
3910 DTSTAMP:20050125T090000Z
3911 DTSTART:20060104T140000Z
3912 DTEND:20060105T220000Z
3913 FREEBUSY;FBTYPE=BUSY-TENTATIVE:20060104T150000Z/PT1H
3914 FREEBUSY:20060104T190000Z/PT1H
3915 END:VFREEBUSY
3916 END:VCALENDAR
3917
3918
3919
3920
3921
3922
3923
3924
3925
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>
3929
3930
3931<span class="h2"><h2><a name="section-8">8</a>. Guidelines</h2></span>
3932
3933<span class="h3"><h3><a name="section-8.1">8.1</a>. Client-to-Client Interoperability</h3></span>
3934
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
3945 CalDAV use cases.
3946
3947<span class="h3"><h3><a name="section-8.2">8.2</a>. Synchronization Operations</h3></span>
3948
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>.
3956
3957<span class="h4"><h4><a name="section-8.2.1">8.2.1</a>. Use of Reports</h4></span>
3958
3959<span class="h5"><h5><a name="section-8.2.1.1">8.2.1.1</a>. Restrict the Time Range</h5></span>
3960
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.
3967
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
3973 current view.
3974
3975
3976
3977
3978
3979
3980
3981
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>
3985
3986
3987<span class="h5"><h5><a name="section-8.2.1.2">8.2.1.2</a>. Synchronize by Time Range</h5></span>
3988
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.
3999
4000<span class="h5"><h5><a name="section-8.2.1.3">8.2.1.3</a>. Synchronization Process</h5></span>
4001
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
4012 be refreshed.
4013
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.
4019
4020 Here's an example of how to do that:
4021
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
4024 returned:
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
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>
4041
4042
4043 REPORT /bernard/work/ HTTP/1.1
4044 Host: cal.example.com
4045 Depth: 1
4046 Content-Type: application/xml; charset="utf-8"
4047 Content-Length: xxxx
4048
4049 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
4050 &lt;C:calendar-query xmlns:D="DAV:"
4051 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
4052 &lt;D:prop&gt;
4053 &lt;D:getetag/&gt;
4054 &lt;/D:prop&gt;
4055 &lt;C:filter&gt;
4056 &lt;C:comp-filter name="VCALENDAR"&gt;
4057 &lt;C:comp-filter name="VEVENT"&gt;
4058 &lt;C:time-range start="20040902T000000Z"
4059 end="20040903T000000Z"/&gt;
4060 &lt;/C:comp-filter&gt;
4061 &lt;/C:comp-filter&gt;
4062 &lt;/C:filter&gt;
4063 &lt;/C:calendar-query&gt;
4064
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:
4072
4073 REPORT /bernard/work/ HTTP/1.1
4074 Host: cal.example.com
4075 Content-Type: application/xml; charset="utf-8"
4076 Content-Length: xxxx
4077
4078 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
4079 &lt;C:calendar-multiget xmlns:D="DAV:"
4080 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
4081 &lt;D:prop&gt;
4082 &lt;D:getetag/&gt;
4083 &lt;C:calendar-data/&gt;
4084 &lt;/D:prop&gt;
4085 &lt;D:href&gt;/bernard/work/abcd1.ics&lt;/D:href&gt;
4086 &lt;D:href&gt;/bernard/work/mtg1.ics&lt;/D:href&gt;
4087 &lt;/C:calendar-multiget&gt;
4088
4089
4090
4091
4092
4093
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>
4097
4098
4099<span class="h4"><h4><a name="section-8.2.2">8.2.2</a>. Restrict the Properties Returned</h4></span>
4100
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.
4106
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.
4113
4114<span class="h3"><h3><a name="section-8.3">8.3</a>. Use of Locking</h3></span>
4115
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.
4126
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.
4135
4136<span class="h3"><h3><a name="section-8.4">8.4</a>. Finding Calendars</h3></span>
4137
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
4145 collections.
4146
4147
4148
4149
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>
4153
4154
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.
4163
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="&quot;vCard MIME Directory Profile&quot;">RFC2426</a>] or LDAP [<a href="http://tools.ietf.org/html/rfc4511" title="&quot;Lightweight Directory Access Protocol (LDAP): The Protocol&quot;">RFC4511</a>] standards
4170 together with calendar attributes [<a href="http://tools.ietf.org/html/rfc2739" title="&quot;Calendar Attributes for vCard and LDAP&quot;">RFC2739</a>].
4171
4172 Because CalDAV requires servers to support WebDAV ACL [<a href="http://tools.ietf.org/html/rfc3744" title="&quot;Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol&quot;">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.
4176
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:
4181
4182 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
4183 &lt;D:principal-match xmlns:D="DAV:"&gt;
4184 &lt;D:self/&gt;
4185 &lt;D:prop&gt;
4186 &lt;C:calendar-home-set
4187 xmlns:C="urn:ietf:params:xml:ns:caldav"/&gt;
4188 &lt;/D:prop&gt;
4189 &lt;/D:principal-match&gt;
4190
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:
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
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>
4209
4210
4211 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
4212 &lt;D:principal-property-search xmlns:D="DAV:"&gt;
4213 &lt;D:property-search&gt;
4214 &lt;D:prop&gt;
4215 &lt;D:displayname/&gt;
4216 &lt;/D:prop&gt;
4217 &lt;D:match&gt;Laurie&lt;/D:match&gt;
4218 &lt;/D:property-search&gt;
4219 &lt;D:prop&gt;
4220 &lt;C:calendar-home-set
4221 xmlns:C="urn:ietf:params:xml:ns:caldav"/&gt;
4222 &lt;D:displayname/&gt;
4223 &lt;/D:prop&gt;
4224 &lt;/D:principal-property-search&gt;
4225
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.
4231
4232<span class="h3"><h3><a name="section-8.5">8.5</a>. Storing and Using Attachments</h3></span>
4233
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.
4237
4238<span class="h4"><h4><a name="section-8.5.1">8.5.1</a>. Inline Attachments</h4></span>
4239
4240 CalDAV clients MUST support inline attachments as specified in
4241 iCalendar [<a href="http://tools.ietf.org/html/rfc2445" title="&quot;Internet Calendaring and Scheduling Core Object Specification (iCalendar)&quot;">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:
4244
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>).
4251
4252 o Servers MAY impose storage quota limitations on calendar
4253 collections (See [<a href="http://tools.ietf.org/html/rfc4331" title="&quot;Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections&quot;">RFC4331</a>]).
4254
4255 o Any change to a calendar object resource containing an inline
4256 attachment requires the entire inline attachment to be re-
4257 uploaded.
4258
4259
4260
4261
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>
4265
4266
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.
4270
4271<span class="h4"><h4><a name="section-8.5.2">8.5.2</a>. External Attachments</h4></span>
4272
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
4279 be:
4280
4281 o In a collection in the calendar collection containing the calendar
4282 object resource;
4283
4284 o Somewhere else in the same repository that hosts the calendar
4285 collection; or
4286
4287 o On an HTTP or FTP server elsewhere.
4288
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.
4297
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.
4312
4313 Also, clients are responsible for consistency of permissions when
4314 using external attachments. One reason for servers to support the
4315
4316
4317
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>
4321
4322
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.
4333
4334<span class="h3"><h3><a name="section-8.6">8.6</a>. Storing and Using Alarms</h3></span>
4335
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).
4343
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
4348 available.
4349
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
4354 convenience.
4355
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.
4359
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.
4363
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.
4368
4369 Clients that allow changes to calendar object resources MUST
4370 synchronize the alarm data that already exists in the resources.
4371
4372
4373
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>
4377
4378
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.
4383
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.
4391
4392<span class="h2"><h2><a name="section-9">9</a>. XML Element Definitions</h2></span>
4393
4394<span class="h3"><h3><a name="section-9.1">9.1</a>. CALDAV:calendar XML Element</h3></span>
4395
4396 Name: calendar
4397
4398 Namespace: urn:ietf:params:xml:ns:caldav
4399
4400 Purpose: Specifies the resource type of a calendar collection.
4401
4402 Description: See <a href="#section-4.2">Section 4.2</a>.
4403
4404 Definition:
4405
4406 &lt;!ELEMENT calendar EMPTY&gt;
4407
4408<span class="h3"><h3><a name="section-9.2">9.2</a>. CALDAV:mkcalendar XML Element</h3></span>
4409
4410 Name: mkcalendar
4411
4412 Namespace: urn:ietf:params:xml:ns:caldav
4413
4414 Purpose: Specifies a request that includes the WebDAV property
4415 values to be set for a calendar collection resource when it is
4416 created.
4417
4418 Description: See <a href="#section-5.3.1">Section 5.3.1</a>.
4419
4420 Definition:
4421
4422 &lt;!ELEMENT mkcalendar (DAV:set)&gt;
4423
4424
4425
4426
4427
4428
4429
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>
4433
4434
4435<span class="h3"><h3><a name="section-9.3">9.3</a>. CALDAV:mkcalendar-response XML Element</h3></span>
4436
4437 Name: mkcalendar-response
4438
4439 Namespace: urn:ietf:params:xml:ns:caldav
4440
4441 Purpose: Specifies a response body for a successful MKCALENDAR
4442 request.
4443
4444 Description: See <a href="#section-5.3.1">Section 5.3.1</a>.
4445
4446 Definition:
4447
4448 &lt;!ELEMENT mkcalendar-response ANY&gt;
4449
4450<span class="h3"><h3><a name="section-9.4">9.4</a>. CALDAV:supported-collation XML Element</h3></span>
4451
4452 Name: supported-collation
4453
4454 Namespace: urn:ietf:params:xml:ns:caldav
4455
4456 Purpose: Identifies a single collation via its collation identifier,
4457 as defined by [<a href="http://tools.ietf.org/html/rfc4790" title="&quot;Internet Application Protocol Collation Registry&quot;">RFC4790</a>].
4458
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>.
4461
4462 Definition:
4463
4464 &lt;!ELEMENT supported-collation (#PCDATA)&gt;
4465 PCDATA value: collation identifier
4466
4467<span class="h3"><h3><a name="section-9.5">9.5</a>. CALDAV:calendar-query XML Element</h3></span>
4468
4469 Name: calendar-query
4470
4471 Namespace: urn:ietf:params:xml:ns:caldav
4472
4473 Purpose: Defines a report for querying calendar object resources.
4474
4475 Description: See <a href="#section-7.8">Section 7.8</a>.
4476
4477 Definition:
4478
4479 &lt;!ELEMENT calendar-query ((DAV:allprop |
4480 DAV:propname |
4481 DAV:prop)?, filter, timezone?)&gt;
4482
4483
4484
4485
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>
4489
4490
4491<span class="h3"><h3><a name="section-9.6">9.6</a>. CALDAV:calendar-data XML Element</h3></span>
4492
4493 Name: calendar-data
4494
4495 Namespace: urn:ietf:params:xml:ns:caldav
4496
4497 Purpose: Specified one of the following:
4498
4499 1. A supported media type for calendar object resources when
4500 nested in the CALDAV:supported-calendar-data property;
4501
4502 2. The parts of a calendar object resource should be returned by
4503 a calendaring report;
4504
4505 3. The content of a calendar object resource in a response to a
4506 calendaring report.
4507
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.
4511
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.
4517
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".
4531
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.
4537
4538
4539
4540
4541
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>
4545
4546
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 &amp;lt;, &amp;gt;, &amp;amp; etc. entity encoding or
4550 the use of a &lt;![CDATA[ ... ]]&gt; construct. In the later case, the
4551 iCalendar data cannot contain the character sequence "]]&gt;", which
4552 is the end delimiter for the CDATA section.
4553
4554 Definition:
4555
4556 &lt;!ELEMENT calendar-data EMPTY&gt;
4557
4558 when nested in the CALDAV:supported-calendar-data property
4559 to specify a supported media type for calendar object
4560 resources;
4561
4562 &lt;!ELEMENT calendar-data (comp?,
4563 (expand | limit-recurrence-set)?,
4564 limit-freebusy-set?)&gt;
4565
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;
4569
4570 &lt;!ELEMENT calendar-data (#PCDATA)&gt;
4571 PCDATA value: iCalendar object
4572
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.
4576
4577 &lt;!ATTLIST calendar-data content-type CDATA "text/calendar"
4578 version CDATA "2.0"&gt;
4579 content-type value: a MIME media type
4580 version value: a version string
4581
4582 attributes can be used on all three variants of the
4583 CALDAV:calendar-data XML element.
4584
4585<span class="h4"><h4><a name="section-9.6.1">9.6.1</a>. CALDAV:comp XML Element</h4></span>
4586
4587 Name: comp
4588
4589 Namespace: urn:ietf:params:xml:ns:caldav
4590
4591 Purpose: Defines which component types to return.
4592
4593
4594
4595
4596
4597
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>
4601
4602
4603 Description: The name value is a calendar component name (e.g.,
4604 VEVENT).
4605
4606 Definition:
4607
4608 &lt;!ELEMENT comp ((allprop | prop*), (allcomp | comp*))&gt;
4609
4610 &lt;!ATTLIST comp name CDATA #REQUIRED&gt;
4611 name value: a calendar component name
4612
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">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
4617 "DAV:" namespace.
4618
4619<span class="h4"><h4><a name="section-9.6.2">9.6.2</a>. CALDAV:allcomp XML Element</h4></span>
4620
4621 Name: allcomp
4622
4623 Namespace: urn:ietf:params:xml:ns:caldav
4624
4625 Purpose: Specifies that all components shall be returned.
4626
4627 Description: The CALDAV:allcomp XML element can be used when the
4628 client wants all types of components returned by a calendaring
4629 REPORT request.
4630
4631 Definition:
4632
4633 &lt;!ELEMENT allcomp EMPTY&gt;
4634
4635<span class="h4"><h4><a name="section-9.6.3">9.6.3</a>. CALDAV:allprop XML Element</h4></span>
4636
4637 Name: allprop
4638
4639 Namespace: urn:ietf:params:xml:ns:caldav
4640
4641 Purpose: Specifies that all properties shall be returned.
4642
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.
4646
4647 Definition:
4648
4649 &lt;!ELEMENT allprop EMPTY&gt;
4650
4651
4652
4653
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>
4657
4658
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">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.
4663
4664<span class="h4"><h4><a name="section-9.6.4">9.6.4</a>. CALDAV:prop XML Element</h4></span>
4665
4666 Name: prop
4667
4668 Namespace: urn:ietf:params:xml:ns:caldav
4669
4670 Purpose: Defines which properties to return in the response.
4671
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.
4679
4680 Definition:
4681
4682 &lt;!ELEMENT prop EMPTY&gt;
4683
4684 &lt;!ATTLIST prop name CDATA #REQUIRED
4685 novalue (yes | no) "no"&gt;
4686 name value: a calendar property name
4687 novalue value: "yes" or "no"
4688
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="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">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.
4693
4694<span class="h4"><h4><a name="section-9.6.5">9.6.5</a>. CALDAV:expand XML Element</h4></span>
4695
4696 Name: expand
4697
4698 Namespace: urn:ietf:params:xml:ns:caldav
4699
4700 Purpose: Forces the server to expand recurring components into
4701 individual recurrence instances.
4702
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
4706
4707
4708
4709
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>
4713
4714
4715 recurrence instance, and MUST return only those whose scheduled
4716 time intersect a specified time range.
4717
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.
4723
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.
4727
4728 Recurring components, other than the initial instance, MUST
4729 include a RECURRENCE-ID property indicating which instance they
4730 refer to.
4731
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.
4737
4738 Definition:
4739
4740 &lt;!ELEMENT expand EMPTY&gt;
4741
4742 &lt;!ATTLIST expand start CDATA #REQUIRED
4743 end CDATA #REQUIRED&gt;
4744 start value: an iCalendar "date with UTC time"
4745 end value: an iCalendar "date with UTC time"
4746
4747<span class="h4"><h4><a name="section-9.6.6">9.6.6</a>. CALDAV:limit-recurrence-set XML Element</h4></span>
4748
4749 Name: limit-recurrence-set
4750
4751 Namespace: urn:ietf:params:xml:ns:caldav
4752
4753 Purpose: Specifies a time range to limit the set of "overridden
4754 components" returned by the server.
4755
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
4762
4763
4764
4765
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>
4769
4770
4771 times -- the ones that would have been used if the instance were
4772 not overridden -- overlap the time range.
4773
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.
4779
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
4783 range.
4784
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.
4793
4794 Definition:
4795
4796 &lt;!ELEMENT limit-recurrence-set EMPTY&gt;
4797
4798 &lt;!ATTLIST limit-recurrence-set start CDATA #REQUIRED
4799 end CDATA #REQUIRED&gt;
4800 start value: an iCalendar "date with UTC time"
4801 end value: an iCalendar "date with UTC time"
4802
4803<span class="h4"><h4><a name="section-9.6.7">9.6.7</a>. CALDAV:limit-freebusy-set XML Element</h4></span>
4804
4805 Name: limit-freebusy-set
4806
4807 Namespace: urn:ietf:params:xml:ns:caldav
4808
4809 Purpose: Specifies a time range to limit the set of FREEBUSY values
4810 returned by the server.
4811
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.
4816
4817 The "start" attribute specifies the inclusive start of the time
4818 range, and the "end" attribute specifies the non-inclusive end of
4819
4820
4821
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>
4825
4826
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.
4830
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.
4834
4835 Definition:
4836
4837 &lt;!ELEMENT limit-freebusy-set EMPTY&gt;
4838
4839 &lt;!ATTLIST limit-freebusy-set start CDATA #REQUIRED
4840 end CDATA #REQUIRED&gt;
4841 start value: an iCalendar "date with UTC time"
4842 end value: an iCalendar "date with UTC time"
4843
4844<span class="h3"><h3><a name="section-9.7">9.7</a>. CALDAV:filter XML Element</h3></span>
4845
4846 Name: filter
4847
4848 Namespace: urn:ietf:params:xml:ns:caldav
4849
4850 Purpose: Specifies a filter to limit the set of calendar components
4851 returned by the server.
4852
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.
4856
4857 Definition:
4858
4859 &lt;!ELEMENT filter (comp-filter)&gt;
4860
4861<span class="h4"><h4><a name="section-9.7.1">9.7.1</a>. CALDAV:comp-filter XML Element</h4></span>
4862
4863 Name: comp-filter
4864
4865 Namespace: urn:ietf:params:xml:ns:caldav
4866
4867 Purpose: Specifies search criteria on calendar components.
4868
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
4875
4876
4877
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>
4881
4882
4883 when used as a child of another CALDAV:comp-filter XML element. A
4884 CALDAV:comp-filter is said to match if:
4885
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;
4889
4890 or:
4891
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;
4896
4897 or:
4898
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
4904 calendar component;
4905
4906 or:
4907
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.
4911
4912 Definition:
4913
4914 &lt;!ELEMENT comp-filter (is-not-defined | (time-range?,
4915 prop-filter*, comp-filter*))&gt;
4916
4917 &lt;!ATTLIST comp-filter name CDATA #REQUIRED&gt;
4918 name value: a calendar object or calendar component
4919 type (e.g., VEVENT)
4920
4921<span class="h4"><h4><a name="section-9.7.2">9.7.2</a>. CALDAV:prop-filter XML Element</h4></span>
4922
4923 Name: prop-filter
4924
4925 Namespace: urn:ietf:params:xml:ns:caldav
4926
4927 Purpose: Specifies search criteria on calendar properties.
4928
4929 Description: The CALDAV:prop-filter XML element specifies a query
4930 targeted at a specific calendar property (e.g., CATEGORIES) in the
4931
4932
4933
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>
4937
4938
4939 scope of the enclosing calendar component. A calendar property is
4940 said to match a CALDAV:prop-filter if:
4941
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;
4945
4946 or:
4947
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
4951 component;
4952
4953 or:
4954
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;
4959
4960 or:
4961
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
4965 targeted property;
4966
4967 Definition:
4968
4969 &lt;!ELEMENT prop-filter (is-not-defined |
4970 ((time-range | text-match)?,
4971 param-filter*))&gt;
4972
4973 &lt;!ATTLIST prop-filter name CDATA #REQUIRED&gt;
4974 name value: a calendar property name (e.g., ATTENDEE)
4975
4976<span class="h4"><h4><a name="section-9.7.3">9.7.3</a>. CALDAV:param-filter XML Element</h4></span>
4977
4978 Name: param-filter
4979
4980 Namespace: urn:ietf:params:xml:ns:caldav
4981
4982 Purpose: Limits the search to specific parameter values.
4983
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
4987
4988
4989
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>
4993
4994
4995 defined. A calendar property parameter is said to match a CALDAV:
4996 param-filter if:
4997
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;
5001
5002 or:
5003
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
5007 examined;
5008
5009 Definition:
5010
5011 &lt;!ELEMENT param-filter (is-not-defined | text-match?)&gt;
5012
5013 &lt;!ATTLIST param-filter name CDATA #REQUIRED&gt;
5014 name value: a property parameter name (e.g., PARTSTAT)
5015
5016<span class="h4"><h4><a name="section-9.7.4">9.7.4</a>. CALDAV:is-not-defined XML Element</h4></span>
5017
5018 Name: is-not-defined
5019
5020 Namespace: urn:ietf:params:xml:ns:caldav
5021
5022 Purpose: Specifies that a match should occur if the enclosing
5023 component, property, or parameter does not exist.
5024
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.
5029
5030 Definition:
5031
5032 &lt;!ELEMENT is-not-defined EMPTY&gt;
5033
5034<span class="h4"><h4><a name="section-9.7.5">9.7.5</a>. CALDAV:text-match XML Element</h4></span>
5035
5036 Name: text-match
5037
5038 Namespace: urn:ietf:params:xml:ns:caldav
5039
5040 Purpose: Specifies a substring match on a property or parameter
5041 value.
5042
5043
5044
5045
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>
5049
5050
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.
5054
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"
5058 collation.
5059
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
5065 CANCELLED.
5066
5067 Definition:
5068
5069 &lt;!ELEMENT text-match (#PCDATA)&gt;
5070 PCDATA value: string
5071
5072 &lt;!ATTLIST text-match collation CDATA "i;ascii-casemap"
5073 negate-condition (yes | no) "no"&gt;
5074
5075<span class="h3"><h3><a name="section-9.8">9.8</a>. CALDAV:timezone XML Element</h3></span>
5076
5077 Name: timezone
5078
5079 Namespace: urn:ietf:params:xml:ns:caldav
5080
5081 Purpose: Specifies the time zone component to use when determining
5082 the results of a report.
5083
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.
5094
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 &amp;lt;, &amp;gt;, &amp;amp; etc. entity encoding or
5098 the use of a &lt;![CDATA[ ... ]]&gt; construct. In the later case, the
5099
5100
5101
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>
5105
5106
5107 iCalendar data cannot contain the character sequence "]]&gt;", which
5108 is the end delimiter for the CDATA section.
5109
5110 Definition:
5111
5112 &lt;!ELEMENT timezone (#PCDATA)&gt;
5113 PCDATA value: an iCalendar object with exactly one VTIMEZONE
5114
5115<span class="h3"><h3><a name="section-9.9">9.9</a>. CALDAV:time-range XML Element</h3></span>
5116
5117 Name: time-range
5118
5119 Namespace: urn:ietf:params:xml:ns:caldav
5120
5121 Purpose: Specifies a time range to limit the set of calendar
5122 components returned by the server.
5123
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
5128 range.
5129
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
5140 "start" attribute.
5141
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.
5148
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="&quot;Internet Calendaring and Scheduling Core Object Specification (iCalendar)&quot;">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
5155
5156
5157
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>
5161
5162
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.
5167
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 &lt; DTEND AND end &gt; DTSTART) |
5180 +---+---+---+---+-----------------------------------------------+
5181 | N | Y | Y | * | (start &lt; DTSTART+DURATION AND end &gt; DTSTART) |
5182 | | +---+---+-----------------------------------------------+
5183 | | | N | * | (start &lt;= DTSTART AND end &gt; DTSTART) |
5184 +---+---+---+---+-----------------------------------------------+
5185 | N | N | N | Y | (start &lt;= DTSTART AND end &gt; DTSTART) |
5186 +---+---+---+---+-----------------------------------------------+
5187 | N | N | N | N | (start &lt; DTSTART+P1D AND end &gt; DTSTART) |
5188 +---+---+---+---+-----------------------------------------------+
5189
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="&quot;Internet Calendaring and Scheduling Core Object Specification (iCalendar)&quot;">RFC2445</a>], the
5195 DUE value MUST be a DATE-TIME value equal to or after the DTSTART
5196 value if specified.
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
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>
5217
5218
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 &lt;= DTSTART+DURATION) AND |
5233 | | | | | | ((end &gt; DTSTART) OR |
5234 | | | | | | (end &gt;= DTSTART+DURATION)) |
5235 +---+---+---+---+---+-----------------------------------------------+
5236 | Y | N | Y | * | * | ((start &lt; DUE) OR (start &lt;= DTSTART)) |
5237 | | | | | | AND |
5238 | | | | | | ((end &gt; DTSTART) OR (end &gt;= DUE)) |
5239 +---+---+---+---+---+-----------------------------------------------+
5240 | Y | N | N | * | * | (start &lt;= DTSTART) AND (end &gt; DTSTART) |
5241 +---+---+---+---+---+-----------------------------------------------+
5242 | N | N | Y | * | * | (start &lt; DUE) AND (end &gt;= DUE) |
5243 +---+---+---+---+---+-----------------------------------------------+
5244 | N | N | N | Y | Y | ((start &lt;= CREATED) OR (start &lt;= COMPLETED))|
5245 | | | | | | AND |
5246 | | | | | | ((end &gt;= CREATED) OR (end &gt;= COMPLETED))|
5247 +---+---+---+---+---+-----------------------------------------------+
5248 | N | N | N | Y | N | (start &lt;= COMPLETED) AND (end &gt;= COMPLETED) |
5249 +---+---+---+---+---+-----------------------------------------------+
5250 | N | N | N | N | Y | (end &gt; CREATED) |
5251 +---+---+---+---+---+-----------------------------------------------+
5252 | N | N | N | N | N | TRUE |
5253 +---+---+---+---+---+-----------------------------------------------+
5254
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.
5262
5263
5264
5265
5266
5267
5268
5269
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>
5273
5274
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 &lt;= DTSTART) AND (end &gt; DTSTART) |
5283 +---+---+--------------------------------------------+
5284 | Y | N | (start &lt; DTSTART+P1D) AND (end &gt; DTSTART) |
5285 +---+---+--------------------------------------------+
5286 | N | * | FALSE |
5287 +---+---+--------------------------------------------+
5288
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.
5296
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.
5301
5302
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 &lt;= DTEND) AND (end &gt; DTSTART) |
5311 +---+---+----------------------------------------------+
5312 | N | Y | (start &lt; freebusy-period-end) AND |
5313 | | | (end &gt; freebusy-period-start) |
5314 +---+---+----------------------------------------------+
5315 | N | N | FALSE |
5316 +---+---+----------------------------------------------+
5317
5318 A VALARM component is said to overlap a given time range if the
5319 following condition holds:
5320
5321 (start &lt;= trigger-time) AND (end &gt; trigger-time)
5322
5323
5324
5325
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>
5329
5330
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.
5334
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:
5338
5339 (start &lt;= date-time) AND (end &gt; date-time)
5340
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.
5346
5347 The semantic of CALDAV:time-range is not defined for any other
5348 calendar components and properties.
5349
5350 Definition:
5351
5352 &lt;!ELEMENT time-range EMPTY&gt;
5353
5354 &lt;!ATTLIST time-range start CDATA #IMPLIED
5355 end CDATA #IMPLIED&gt;
5356 start value: an iCalendar "date with UTC time"
5357 end value: an iCalendar "date with UTC time"
5358
5359<span class="h3"><h3><a name="section-9.10">9.10</a>. CALDAV:calendar-multiget XML Element</h3></span>
5360
5361 Name: calendar-multiget
5362
5363 Namespace: urn:ietf:params:xml:ns:caldav
5364
5365 Purpose: CalDAV report used to retrieve specific calendar object
5366 resources.
5367
5368 Description: See <a href="#section-7.9">Section 7.9</a>.
5369
5370 Definition:
5371
5372 &lt;!ELEMENT calendar-multiget ((DAV:allprop |
5373 DAV:propname |
5374 DAV:prop)?, DAV:href+)&gt;
5375
5376
5377
5378
5379
5380
5381
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>
5385
5386
5387<span class="h3"><h3><a name="section-9.11">9.11</a>. CALDAV:free-busy-query XML Element</h3></span>
5388
5389 Name: free-busy-query
5390
5391 Namespace: urn:ietf:params:xml:ns:caldav
5392
5393 Purpose: CalDAV report used to generate a VFREEBUSY to determine
5394 busy time over a specific time range.
5395
5396 Description: See <a href="#section-7.10">Section 7.10</a>.
5397
5398 Definition:
5399
5400 &lt;!ELEMENT free-busy-query (time-range)&gt;
5401
5402<span class="h2"><h2><a name="section-10">10</a>. Internationalization Considerations</h2></span>
5403
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>).
5406
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>).
5411
5412<span class="h2"><h2><a name="section-11">11</a>. Security Considerations</h2></span>
5413
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="&quot;HTTP Over TLS&quot;">RFC2818</a>]. In particular,
5417 HTTP Basic authentication MUST NOT be used unless TLS is in effect.
5418
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.
5427
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.
5435
5436
5437
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>
5441
5442
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
5450 type.
5451
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
5455 procedure alarms.
5456
5457 Security considerations described in iCalendar [<a href="http://tools.ietf.org/html/rfc2445" title="&quot;Internet Calendaring and Scheduling Core Object Specification (iCalendar)&quot;">RFC2445</a>] and iTIP
5458 [<a href="http://tools.ietf.org/html/rfc2446" title="&quot;iCalendar Transport-Independent Interoperability Protocol (iTIP) Scheduling Events, BusyTime, To-dos and Journal Entries&quot;">RFC2446</a>] are also applicable to CalDAV.
5459
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="&quot;Hypertext Transfer Protocol -- HTTP/1.1&quot;">RFC2616</a>] and WebDAV [<a href="http://tools.ietf.org/html/rfc2518" title="&quot;HTTP Extensions for Distributed Authoring -- WEBDAV&quot;">RFC2518</a>], [<a href="http://tools.ietf.org/html/rfc3253" title="&quot;Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning)&quot;">RFC3253</a>],
5462 [<a href="http://tools.ietf.org/html/rfc3744" title="&quot;Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol&quot;">RFC3744</a>].
5463
5464<span class="h2"><h2><a name="section-12">12</a>. IANA Considerations</h2></span>
5465
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="&quot;The IETF XML Registry&quot;">RFC3688</a>].
5468
5469<span class="h3"><h3><a name="section-12.1">12.1</a>. Namespace Registration</h3></span>
5470
5471 Registration request for the CalDAV namespace:
5472
5473 URI: urn:ietf:params:xml:ns:caldav
5474
5475 Registrant Contact: See the "Authors' Addresses" section of this
5476 document.
5477
5478 XML: None. Namespace URIs do not represent an XML specification.
5479
5480<span class="h2"><h2><a name="section-13">13</a>. Acknowledgements</h2></span>
5481
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.
5490
5491
5492
5493
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>
5497
5498
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.
5502
5503<span class="h2"><h2><a name="section-14">14</a>. References</h2></span>
5504
5505<span class="h3"><h3><a name="section-14.1">14.1</a>. Normative References</h3></span>
5506
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.
5510
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.
5513
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>,
5517 November 1998.
5518
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.
5524
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>,
5528 February 1999.
5529
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.
5534
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>,
5536 May 2000.
5537
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.
5542
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.
5545
5546
5547
5548
5549
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>
5553
5554
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.
5559
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.
5563
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.
5567
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 &lt;<a href="http://www.w3.org/TR/2006/REC-xml-20060816">http://www.w3.org/TR/2006/REC-xml-20060816</a>&gt;.
5574
5575<span class="h3"><h3><a name="section-14.2">14.2</a>. Informative References</h3></span>
5576
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.
5579
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.
5583
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>,
5587 February 2006.
5588
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.
5592
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&amp;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.
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
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>
5609
5610
5611<span class="h2"><h2><a name="appendix-A">Appendix A</a>. CalDAV Method Privilege Table (Normative)</h2></span>
5612
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="&quot;Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol&quot;">RFC3744</a>].
5615
5616 +------------+------------------------------------------------------+
5617 | METHOD | PRIVILEGES |
5618 +------------+------------------------------------------------------+
5619 | MKCALENDAR | DAV:bind |
5620 | REPORT | DAV:read or CALDAV:read-free-busy (on all referenced |
5621 | | resources) |
5622 +------------+------------------------------------------------------+
5623
5624<span class="h2"><h2><a name="appendix-B">Appendix B</a>. Calendar Collections Used in the Examples</h2></span>
5625
5626 This appendix shows the calendar object resources contained in the
5627 calendar collection queried in the examples throughout this document.
5628
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:
5632
5633 &gt;&gt; Request &lt;&lt;
5634
5635 REPORT /bernard/work/ HTTP/1.1
5636 Host: cal.example.com
5637 Depth: 1
5638 Content-Type: application/xml; charset="utf-8"
5639 Content-Length: xxxx
5640
5641 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
5642 &lt;C:calendar-query xmlns:D="DAV:"
5643 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
5644 &lt;D:prop&gt;
5645 &lt;D:getetag/&gt;
5646 &lt;C:calendar-data/&gt;
5647 &lt;/D:prop&gt;
5648 &lt;C:filter&gt;
5649 &lt;C:comp-filter name="VCALENDAR"/&gt;
5650 &lt;/C:filter&gt;
5651 &lt;/C:calendar-query&gt;
5652
5653 &gt;&gt; Response &lt;&lt;
5654
5655 HTTP/1.1 207 Multi-Status
5656 Content-Type: application/xml; charset="utf-8"
5657 Content-Length: xxxx
5658
5659
5660
5661
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>
5665
5666
5667 &lt;?xml version="1.0" encoding="utf-8" ?&gt;
5668 &lt;D:multistatus xmlns:D="DAV:"
5669 xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
5670
5671 &lt;D:response&gt;
5672 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd1.ics&lt;/D:href&gt;
5673 &lt;D:propstat&gt;
5674 &lt;D:prop&gt;
5675 &lt;D:getetag&gt;"fffff-abcd1"&lt;/D:getetag&gt;
5676 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
5677 VERSION:2.0
5678 PRODID:-//Example Corp.//CalDAV Client//EN
5679 BEGIN:VTIMEZONE
5680 LAST-MODIFIED:20040110T032845Z
5681 TZID:US/Eastern
5682 BEGIN:DAYLIGHT
5683 DTSTART:20000404T020000
5684 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
5685 TZNAME:EDT
5686 TZOFFSETFROM:-0500
5687 TZOFFSETTO:-0400
5688 END:DAYLIGHT
5689 BEGIN:STANDARD
5690 DTSTART:20001026T020000
5691 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
5692 TZNAME:EST
5693 TZOFFSETFROM:-0400
5694 TZOFFSETTO:-0500
5695 END:STANDARD
5696 END:VTIMEZONE
5697 BEGIN:VEVENT
5698 DTSTAMP:20060206T001102Z
5699 DTSTART;TZID=US/Eastern:20060102T100000
5700 DURATION:PT1H
5701 SUMMARY:Event #1
5702 Description:Go Steelers!
5703 UID:74855313FA803DA593CD579A@example.com
5704 END:VEVENT
5705 END:VCALENDAR
5706 &lt;/C:calendar-data&gt;
5707 &lt;/D:prop&gt;
5708 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
5709 &lt;/D:propstat&gt;
5710 &lt;/D:response&gt;
5711
5712 &lt;D:response&gt;
5713 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd2.ics&lt;/D:href&gt;
5714 &lt;D:propstat&gt;
5715
5716
5717
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>
5721
5722
5723 &lt;D:prop&gt;
5724 &lt;D:getetag&gt;"fffff-abcd2"&lt;/D:getetag&gt;
5725 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
5726 VERSION:2.0
5727 PRODID:-//Example Corp.//CalDAV Client//EN
5728 BEGIN:VTIMEZONE
5729 LAST-MODIFIED:20040110T032845Z
5730 TZID:US/Eastern
5731 BEGIN:DAYLIGHT
5732 DTSTART:20000404T020000
5733 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
5734 TZNAME:EDT
5735 TZOFFSETFROM:-0500
5736 TZOFFSETTO:-0400
5737 END:DAYLIGHT
5738 BEGIN:STANDARD
5739 DTSTART:20001026T020000
5740 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
5741 TZNAME:EST
5742 TZOFFSETFROM:-0400
5743 TZOFFSETTO:-0500
5744 END:STANDARD
5745 END:VTIMEZONE
5746 BEGIN:VEVENT
5747 DTSTAMP:20060206T001121Z
5748 DTSTART;TZID=US/Eastern:20060102T120000
5749 DURATION:PT1H
5750 RRULE:FREQ=DAILY;COUNT=5
5751 SUMMARY:Event #2
5752 UID:00959BC664CA650E933C892C@example.com
5753 END:VEVENT
5754 BEGIN:VEVENT
5755 DTSTAMP:20060206T001121Z
5756 DTSTART;TZID=US/Eastern:20060104T140000
5757 DURATION:PT1H
5758 RECURRENCE-ID;TZID=US/Eastern:20060104T120000
5759 SUMMARY:Event #2 bis
5760 UID:00959BC664CA650E933C892C@example.com
5761 END:VEVENT
5762 END:VCALENDAR
5763 &lt;/C:calendar-data&gt;
5764 &lt;/D:prop&gt;
5765 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
5766 &lt;/D:propstat&gt;
5767 &lt;/D:response&gt;
5768
5769 &lt;D:response&gt;
5770 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd3.ics&lt;/D:href&gt;
5771
5772
5773
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>
5777
5778
5779 &lt;D:propstat&gt;
5780 &lt;D:prop&gt;
5781 &lt;D:getetag&gt;"fffff-abcd3"&lt;/D:getetag&gt;
5782 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
5783 VERSION:2.0
5784 PRODID:-//Example Corp.//CalDAV Client//EN
5785 BEGIN:VTIMEZONE
5786 LAST-MODIFIED:20040110T032845Z
5787 TZID:US/Eastern
5788 BEGIN:DAYLIGHT
5789 DTSTART:20000404T020000
5790 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
5791 TZNAME:EDT
5792 TZOFFSETFROM:-0500
5793 TZOFFSETTO:-0400
5794 END:DAYLIGHT
5795 BEGIN:STANDARD
5796 DTSTART:20001026T020000
5797 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
5798 TZNAME:EST
5799 TZOFFSETFROM:-0400
5800 TZOFFSETTO:-0500
5801 END:STANDARD
5802 END:VTIMEZONE
5803 BEGIN:VEVENT
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
5808 DURATION:PT1H
5809 LAST-MODIFIED:20060206T001330Z
5810 ORGANIZER:mailto:cyrus@example.com
5811 SEQUENCE:1
5812 STATUS:TENTATIVE
5813 SUMMARY:Event #3
5814 UID:DC6C50A017428C5216A2F1CD@example.com
5815 END:VEVENT
5816 END:VCALENDAR
5817 &lt;/C:calendar-data&gt;
5818 &lt;/D:prop&gt;
5819 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
5820 &lt;/D:propstat&gt;
5821 &lt;/D:response&gt;
5822
5823 &lt;D:response&gt;
5824 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd4.ics&lt;/D:href&gt;
5825 &lt;D:propstat&gt;
5826 &lt;D:prop&gt;
5827
5828
5829
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>
5833
5834
5835 &lt;D:getetag&gt;"fffff-abcd4"&lt;/D:getetag&gt;
5836 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
5837 VERSION:2.0
5838 PRODID:-//Example Corp.//CalDAV Client//EN
5839 BEGIN:VTODO
5840 DTSTAMP:20060205T235335Z
5841 DUE;VALUE=DATE:20060104
5842 STATUS:NEEDS-ACTION
5843 SUMMARY:Task #1
5844 UID:DDDEEB7915FA61233B861457@example.com
5845 BEGIN:VALARM
5846 ACTION:AUDIO
5847 TRIGGER;RELATED=START:-PT10M
5848 END:VALARM
5849 END:VTODO
5850 END:VCALENDAR
5851 &lt;/C:calendar-data&gt;
5852 &lt;/D:prop&gt;
5853 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
5854 &lt;/D:propstat&gt;
5855 &lt;/D:response&gt;
5856
5857 &lt;D:response&gt;
5858 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd5.ics&lt;/D:href&gt;
5859 &lt;D:propstat&gt;
5860 &lt;D:prop&gt;
5861 &lt;D:getetag&gt;"fffff-abcd5"&lt;/D:getetag&gt;
5862 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
5863 VERSION:2.0
5864 PRODID:-//Example Corp.//CalDAV Client//EN
5865 BEGIN:VTODO
5866 DTSTAMP:20060205T235300Z
5867 DUE;VALUE=DATE:20060106
5868 LAST-MODIFIED:20060205T235308Z
5869 SEQUENCE:1
5870 STATUS:NEEDS-ACTION
5871 SUMMARY:Task #2
5872 UID:E10BA47467C5C69BB74E8720@example.com
5873 BEGIN:VALARM
5874 ACTION:AUDIO
5875 TRIGGER;RELATED=START:-PT10M
5876 END:VALARM
5877 END:VTODO
5878 END:VCALENDAR
5879 &lt;/C:calendar-data&gt;
5880 &lt;/D:prop&gt;
5881 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
5882 &lt;/D:propstat&gt;
5883
5884
5885
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>
5889
5890
5891 &lt;/D:response&gt;
5892
5893 &lt;D:response&gt;
5894 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd6.ics&lt;/D:href&gt;
5895 &lt;D:propstat&gt;
5896 &lt;D:prop&gt;
5897 &lt;D:getetag&gt;"fffff-abcd6"&lt;/D:getetag&gt;
5898 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
5899 VERSION:2.0
5900 PRODID:-//Example Corp.//CalDAV Client//EN
5901 BEGIN:VTODO
5902 COMPLETED:20051223T122322Z
5903 DTSTAMP:20060205T235400Z
5904 DUE;VALUE=DATE:20051225
5905 LAST-MODIFIED:20060205T235308Z
5906 SEQUENCE:1
5907 STATUS:COMPLETED
5908 SUMMARY:Task #3
5909 UID:E10BA47467C5C69BB74E8722@example.com
5910 END:VTODO
5911 END:VCALENDAR
5912 &lt;/C:calendar-data&gt;
5913 &lt;/D:prop&gt;
5914 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
5915 &lt;/D:propstat&gt;
5916 &lt;/D:response&gt;
5917
5918 &lt;D:response&gt;
5919 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd7.ics&lt;/D:href&gt;
5920 &lt;D:propstat&gt;
5921 &lt;D:prop&gt;
5922 &lt;D:getetag&gt;"fffff-abcd7"&lt;/D:getetag&gt;
5923 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
5924 VERSION:2.0
5925 PRODID:-//Example Corp.//CalDAV Client//EN
5926 BEGIN:VTODO
5927 DTSTAMP:20060205T235600Z
5928 DUE;VALUE=DATE:20060101
5929 LAST-MODIFIED:20060205T235308Z
5930 SEQUENCE:1
5931 STATUS:CANCELLED
5932 SUMMARY:Task #4
5933 UID:E10BA47467C5C69BB74E8725@example.com
5934 END:VTODO
5935 END:VCALENDAR
5936 &lt;/C:calendar-data&gt;
5937 &lt;/D:prop&gt;
5938 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
5939
5940
5941
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>
5945
5946
5947 &lt;/D:propstat&gt;
5948 &lt;/D:response&gt;
5949
5950 &lt;D:response&gt;
5951 &lt;D:href&gt;http://cal.example.com/bernard/work/abcd8.ics&lt;/D:href&gt;
5952 &lt;D:propstat&gt;
5953 &lt;D:prop&gt;
5954 &lt;D:getetag&gt;"fffff-abcd8"&lt;/D:getetag&gt;
5955 &lt;C:calendar-data&gt;BEGIN:VCALENDAR
5956 VERSION:2.0
5957 PRODID:-//Example Corp.//CalDAV Client//EN
5958 BEGIN:VFREEBUSY
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
5970 END:VFREEBUSY
5971 END:VCALENDAR
5972 &lt;/C:calendar-data&gt;
5973 &lt;/D:prop&gt;
5974 &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
5975 &lt;/D:propstat&gt;
5976 &lt;/D:response&gt;
5977
5978 &lt;/D:multistatus&gt;
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
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>
6001
6002
6003Authors' Addresses
6004
6005 Cyrus Daboo
6006 Apple Inc.
6007 1 Infinite Loop
6008 Cupertino, CA 95014
6009 USA
6010
6011 EMail: cyrus@daboo.name
6012 URI: <a href="http://www.apple.com/">http://www.apple.com/</a>
6013
6014
6015 Bernard Desruisseaux
6016 Oracle Corporation
6017 600 Blvd. de Maisonneuve West
6018 Suite 1900
6019 Montreal, QC H3A 3J2
6020 CANADA
6021
6022 EMail: bernard.desruisseaux@oracle.com
6023 URI: <a href="http://www.oracle.com/">http://www.oracle.com/</a>
6024
6025
6026 Lisa Dusseault
6027 CommerceNet
6028 169 University Ave.
6029 Palo Alto, CA 94301
6030 USA
6031
6032 EMail: ldusseault@commerce.net
6033 URI: <a href="http://commerce.net/">http://commerce.net/</a>
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
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>
6057
6058
6059Full Copyright Statement
6060
6061 Copyright (C) The IETF Trust (2007).
6062
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.
6066
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.
6074
6075Intellectual Property
6076
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>.
6085
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>.
6092
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
6097 ietf-ipr@ietf.org.
6098
6099Acknowledgement
6100
6101 Funding for the RFC Editor function is currently provided by the
6102 Internet Society.
6103
6104
6105
6106
6107
6108
6109
6110Daboo, et al. Standards Track [Page 107]
6111</pre><pre class="newpage">
6112</pre><br>
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>
6116</body></html>
This page took 0.809972 seconds and 5 git commands to generate.