]>
Commit | Line | Data |
---|---|---|
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'> </span></td></tr> <tr><td>Draft:</td> <td><span class='cplate bgred'> </span></td></tr> <tr><td>Informational:</td> <td><span class='cplate bgorange'> </span></td></tr> <tr><td>Experimental:</td> <td><span class='cplate bgyellow'> </span></td></tr> <tr><td>Best Common Practice:</td><td><span class='cplate bgmagenta'> </span></td></tr> <tr><td>Proposed Standard:</td><td><span class='cplate bgblue'> </span></td></tr> <tr><td>Draft Standard:</td> <td><span class='cplate bgcyan'> </span></td></tr> <tr><td>Standard:</td> <td><span class='cplate bggreen'> </span></td></tr> <tr><td>Historic:</td> <td><span class='cplate bggrey'> </span></td></tr> <tr><td>Obsolete:</td> <td><span class='cplate bgbrown'> </span></td></tr> </table>"; | |
101 | function showElem(id) { | |
102 | var elem = document.getElementById(id); | |
103 | elem.innerHTML = eval(id+"_html"); | |
104 | elem.style.visibility='visible'; | |
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 | |
124 | Request for Comments: 4791 Apple | |
125 | Category: 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 | ||
134 | Status 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 | ||
142 | Copyright Notice | |
143 | ||
144 | Copyright (C) The IETF Trust (2007). | |
145 | ||
146 | Abstract | |
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 | ||
179 | Table 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=""Hypertext Transfer Protocol -- HTTP/1.1"">RFC2616</a>] and WebDAV [<a href="http://tools.ietf.org/html/rfc2518" title=""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518</a>] as a basis | |
350 | for a calendar access protocol is by no means a new concept: it was | |
351 | discussed in the IETF CALSCH working group as early as 1997 or 1998. | |
352 | Several companies have implemented calendar access protocols using | |
353 | HTTP to upload and download iCalendar [<a href="http://tools.ietf.org/html/rfc2445" title=""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445</a>] objects, and using | |
354 | WebDAV to get listings of resources. However, those implementations | |
355 | do not interoperate because there are many small and big decisions to | |
356 | be made in how to model calendaring data as WebDAV resources, as well | |
357 | as how to implement required features that aren't already part of | |
358 | WebDAV. This document proposes a way to model calendar data in | |
359 | WebDAV, with additional features to make an interoperable calendar | |
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=""Key words for use in RFCs to Indicate Requirement Levels"">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 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=""Extensible Markup Language (XML) 1.0 (Fourth Edition)"">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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518</a>], which use the "DAV:" namespace. | |
393 | Wherever such XML elements appear, they are explicitly prefixed with | |
394 | "DAV:" to avoid confusion. | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">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=""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518</a>] (note that [<a href="#ref-rfc2518bis" title=""HTTP Extensions for Distributed Authoring - WebDAV"">rfc2518bis</a>] | |
440 | describes clarifications to [<a href="http://tools.ietf.org/html/rfc2518" title=""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518</a>] that aid interoperability); | |
441 | ||
442 | o MUST support WebDAV ACL [<a href="http://tools.ietf.org/html/rfc3744" title=""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744</a>] with the additional privilege | |
443 | defined in <a href="#section-6.1">Section 6.1</a> of this document; | |
444 | ||
445 | o MUST support transport over TLS [<a href="http://tools.ietf.org/html/rfc2246" title=""The TLS Protocol Version 1.0"">RFC2246</a>] as defined in [<a href="http://tools.ietf.org/html/rfc2818" title=""HTTP Over TLS"">RFC2818</a>] | |
446 | (note that [<a href="http://tools.ietf.org/html/rfc2246" title=""The TLS Protocol Version 1.0"">RFC2246</a>] has been obsoleted by [<a href="http://tools.ietf.org/html/rfc4346" title=""The Transport Layer Security (TLS) Protocol Version 1.1"">RFC4346</a>]); | |
447 | ||
448 | o MUST support ETags [<a href="http://tools.ietf.org/html/rfc2616" title=""Hypertext Transfer Protocol -- HTTP/1.1"">RFC2616</a>] with additional requirements | |
449 | specified in <a href="#section-5.3.4">Section 5.3.4</a> of this document; | |
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=""Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning)"">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 | <!ELEMENT calendar EMPTY> | |
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 | >> Request << | |
743 | ||
744 | OPTIONS /home/bernard/calendars/ HTTP/1.1 | |
745 | Host: cal.example.com | |
746 | ||
747 | >> Response << | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518</a>]). An xml:lang attribute indicating the human | |
778 | language of the description SHOULD be set for this property by | |
779 | clients or through server provisioning. Servers MUST return any | |
780 | xml:lang attribute if set for the property. | |
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 | <!ELEMENT calendar-description (#PCDATA)> | |
798 | PCDATA value: string | |
799 | ||
800 | Example: | |
801 | ||
802 | <C:calendar-description xml:lang="fr-CA" | |
803 | xmlns:C="urn:ietf:params:xml:ns:caldav" | |
804 | >Calendrier de Mathilde Desruisseaux</C:calendar-description> | |
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 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 &lt;, &gt;, &amp; etc. entity | |
836 | encoding or the use of a <![CDATA[ ... ]]> construct. In the | |
837 | later case, the iCalendar data cannot contain the character | |
838 | sequence "]]>", which is the end delimiter for the CDATA section. | |
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 | <!ELEMENT calendar-timezone (#PCDATA)> | |
854 | PCDATA value: an iCalendar object with exactly one VTIMEZONE | |
855 | component. | |
856 | ||
857 | Example: | |
858 | ||
859 | <C:calendar-timezone | |
860 | xmlns:C="urn:ietf:params:xml:ns:caldav">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; 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; Canada) | |
879 | END:DAYLIGHT | |
880 | END:VTIMEZONE | |
881 | END:VCALENDAR | |
882 | </C:calendar-timezone> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">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 <C:comp name="VTIMEZONE"/> MUST | |
918 | only be specified if support for calendar object resources that | |
919 | only contain VTIMEZONE components is provided or desired. Support | |
920 | for VTIMEZONE components in calendar object resources that contain | |
921 | VEVENT or VTODO components is always assumed. In the absence of | |
922 | this property, the server MUST accept all component types, and the | |
923 | client can assume that all component types are accepted. | |
924 | ||
925 | Definition: | |
926 | ||
927 | <!ELEMENT supported-calendar-component-set (comp+)> | |
928 | ||
929 | Example: | |
930 | ||
931 | <C:supported-calendar-component-set | |
932 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
933 | <C:comp name="VEVENT"/> | |
934 | <C:comp name="VTODO"/> | |
935 | </C:supported-calendar-component-set> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">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 | <!ELEMENT supported-calendar-data (calendar-data+)> | |
973 | ||
974 | Example: | |
975 | ||
976 | <C:supported-calendar-data | |
977 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
978 | <C:calendar-data content-type="text/calendar" version="2.0"/> | |
979 | </C:supported-calendar-data> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">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 | <!ELEMENT max-resource-size (#PCDATA)> | |
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 | <C:max-resource-size xmlns:C="urn:ietf:params:xml:ns:caldav" | |
1022 | >102400</C:max-resource-size> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">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 | <!ELEMENT min-date-time (#PCDATA)> | |
1059 | PCDATA value: an iCalendar format DATE-TIME value in UTC | |
1060 | ||
1061 | Example: | |
1062 | ||
1063 | <C:min-date-time xmlns:C="urn:ietf:params:xml:ns:caldav" | |
1064 | >19000101T000000Z</C:min-date-time> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">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 | <!ELEMENT max-date-time (#PCDATA)> | |
1110 | PCDATA value: an iCalendar format DATE-TIME value in UTC | |
1111 | ||
1112 | Example: | |
1113 | ||
1114 | <C:max-date-time xmlns:C="urn:ietf:params:xml:ns:caldav" | |
1115 | >20491231T235959Z</C:max-date-time> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">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 | <!ELEMENT max-instances (#PCDATA)> | |
1159 | PCDATA value: a numeric value (integer greater than zero) | |
1160 | ||
1161 | Example: | |
1162 | ||
1163 | <C:max-instances xmlns:C="urn:ietf:params:xml:ns:caldav" | |
1164 | >100</C:max-instances> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">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 | <!ELEMENT max-attendees-per-instance (#PCDATA)> | |
1204 | PCDATA value: a numeric value (integer greater than zero) | |
1205 | ||
1206 | Example: | |
1207 | ||
1208 | <C:max-attendees-per-instance | |
1209 | xmlns:C="urn:ietf:params:xml:ns:caldav" | |
1210 | >25</C:max-attendees-per-instance> | |
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 12.13.2 of [RFC2518]</a>. | |
1276 | ||
1277 | <!ELEMENT mkcalendar (DAV:set)> | |
1278 | ||
1279 | If a response body for a successful request is included, it MUST | |
1280 | be a CALDAV:mkcalendar-response XML element. | |
1281 | ||
1282 | <!ELEMENT mkcalendar-response ANY> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
1419 | <C:mkcalendar xmlns:D="DAV:" | |
1420 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
1421 | <D:set> | |
1422 | <D:prop> | |
1423 | <D:displayname>Lisa's Events</D:displayname> | |
1424 | <C:calendar-description xml:lang="en" | |
1425 | >Calendar restricted to events.</C:calendar-description> | |
1426 | <C:supported-calendar-component-set> | |
1427 | <C:comp name="VEVENT"/> | |
1428 | </C:supported-calendar-component-set> | |
1429 | <C:calendar-timezone><![CDATA[BEGIN:VCALENDAR | |
1430 | PRODID:-//Example Corp.//CalDAV Client//EN | |
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 & 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 & Canada) | |
1448 | END:DAYLIGHT | |
1449 | END:VTIMEZONE | |
1450 | END:VCALENDAR | |
1451 | ]]></C:calendar-timezone> | |
1452 | </D:prop> | |
1453 | </D:set> | |
1454 | </C:mkcalendar> | |
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 | >> Response << | |
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 | >> Request << | |
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 | >> Response << | |
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 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 | <!ELEMENT no-uid-conflict (DAV:href)> | |
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 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=""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744</a>]. WebDAV ACL provides a framework for an extensible set | |
1721 | of privileges that can be applied to WebDAV collections and ordinary | |
1722 | resources. CalDAV servers MUST also support the calendaring | |
1723 | privilege defined in this section. | |
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 | <!ELEMENT read-free-busy EMPTY> | |
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=""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">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 | <!ELEMENT calendar-home-set (DAV:href*)> | |
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 | <C:calendar-home-set xmlns:D="DAV:" | |
1806 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
1807 | <D:href>http://cal.example.com/home/bernard/calendars/</D:href> | |
1808 | </C:calendar-home-set> | |
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 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 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 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=""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445</a>] for determining the actual start and | |
1905 | end times of calendar components MUST be used, and these are fully | |
1906 | enumerated in <a href="#section-9.9">Section 9.9</a> of this document. | |
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=""Internet Application Protocol Collation Registry"">RFC4790</a>] to specify collations that may be used | |
1933 | to carry out the text comparison operations with a well-defined rule. | |
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 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=""Internet Application Protocol Collation Registry"">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 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 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 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 | <!ELEMENT supported-collation-set (supported-collation*)> | |
1993 | ||
1994 | <!ELEMENT supported-collation (#PCDATA)> | |
1995 | ||
1996 | Example: | |
1997 | ||
1998 | <C:supported-collation-set | |
1999 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2000 | <C:supported-collation>i;ascii-casemap</C:supported-collation> | |
2001 | <C:supported-collation>i;octet</C:supported-collation> | |
2002 | </C:supported-collation-set> | |
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 <C:comp name="VEVENT"> | |
2145 | element in a <C:comp name="VTODO"> element, and a CALDAV:filter | |
2146 | cannot nest a <C:time-range start="..." end="..."> element in a | |
2147 | <C:prop name="SUMMARY"> element. | |
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 | <!ELEMENT supported-filter (comp-filter*, | |
2161 | prop-filter*, | |
2162 | param-filter*)> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2260 | <C:calendar-query xmlns:D="DAV:" | |
2261 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2262 | <D:prop> | |
2263 | <D:getetag/> | |
2264 | <C:calendar-data> | |
2265 | <C:comp name="VCALENDAR"> | |
2266 | <C:prop name="VERSION"/> | |
2267 | <C:comp name="VEVENT"> | |
2268 | <C:prop name="SUMMARY"/> | |
2269 | <C:prop name="UID"/> | |
2270 | <C:prop name="DTSTART"/> | |
2271 | <C:prop name="DTEND"/> | |
2272 | <C:prop name="DURATION"/> | |
2273 | <C:prop name="RRULE"/> | |
2274 | <C:prop name="RDATE"/> | |
2275 | <C:prop name="EXRULE"/> | |
2276 | <C:prop name="EXDATE"/> | |
2277 | <C:prop name="RECURRENCE-ID"/> | |
2278 | </C:comp> | |
2279 | <C:comp name="VTIMEZONE"/> | |
2280 | </C:comp> | |
2281 | </C:calendar-data> | |
2282 | </D:prop> | |
2283 | <C:filter> | |
2284 | <C:comp-filter name="VCALENDAR"> | |
2285 | <C:comp-filter name="VEVENT"> | |
2286 | <C:time-range start="20060104T000000Z" | |
2287 | end="20060105T000000Z"/> | |
2288 | </C:comp-filter> | |
2289 | </C:comp-filter> | |
2290 | </C:filter> | |
2291 | </C:calendar-query> | |
2292 | ||
2293 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2308 | <D:multistatus xmlns:D="DAV:" | |
2309 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2310 | <D:response> | |
2311 | <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> | |
2312 | <D:propstat> | |
2313 | <D:prop> | |
2314 | <D:getetag>"fffff-abcd2"</D:getetag> | |
2315 | <C:calendar-data>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 | </C:calendar-data> | |
2366 | </D:prop> | |
2367 | <D:status>HTTP/1.1 200 OK</D:status> | |
2368 | </D:propstat> | |
2369 | </D:response> | |
2370 | <D:response> | |
2371 | <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> | |
2372 | <D:propstat> | |
2373 | <D:prop> | |
2374 | <D:getetag>"fffff-abcd3"</D:getetag> | |
2375 | <C:calendar-data>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 | </C:calendar-data> | |
2404 | </D:prop> | |
2405 | <D:status>HTTP/1.1 200 OK</D:status> | |
2406 | </D:propstat> | |
2407 | </D:response> | |
2408 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2442 | <C:calendar-query xmlns:D="DAV:" | |
2443 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2444 | <D:prop> | |
2445 | <C:calendar-data> | |
2446 | <C:limit-recurrence-set start="20060103T000000Z" | |
2447 | end="20060105T000000Z"/> | |
2448 | </C:calendar-data> | |
2449 | </D:prop> | |
2450 | <C:filter> | |
2451 | <C:comp-filter name="VCALENDAR"> | |
2452 | <C:comp-filter name="VEVENT"> | |
2453 | <C:time-range start="20060103T000000Z" | |
2454 | end="20060105T000000Z"/> | |
2455 | </C:comp-filter> | |
2456 | </C:comp-filter> | |
2457 | </C:filter> | |
2458 | </C:calendar-query> | |
2459 | ||
2460 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2476 | <D:multistatus xmlns:D="DAV:" | |
2477 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2478 | <D:response> | |
2479 | <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> | |
2480 | <D:propstat> | |
2481 | <D:prop> | |
2482 | <D:getetag>"fffff-abcd2"</D:getetag> | |
2483 | <C:calendar-data>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 | </C:calendar-data> | |
2522 | </D:prop> | |
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 | <D:status>HTTP/1.1 200 OK</D:status> | |
2532 | </D:propstat> | |
2533 | </D:response> | |
2534 | <D:response> | |
2535 | <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> | |
2536 | <D:propstat> | |
2537 | <D:prop> | |
2538 | <D:getetag>"fffff-abcd3"</D:getetag> | |
2539 | <C:calendar-data>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 | </C:calendar-data> | |
2576 | </D:prop> | |
2577 | <D:status>HTTP/1.1 200 OK</D:status> | |
2578 | </D:propstat> | |
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 | </D:response> | |
2588 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2611 | <C:calendar-query xmlns:D="DAV:" | |
2612 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2613 | <D:prop> | |
2614 | <C:calendar-data> | |
2615 | <C:expand start="20060103T000000Z" | |
2616 | end="20060105T000000Z"/> | |
2617 | </C:calendar-data> | |
2618 | </D:prop> | |
2619 | <C:filter> | |
2620 | <C:comp-filter name="VCALENDAR"> | |
2621 | <C:comp-filter name="VEVENT"> | |
2622 | <C:time-range start="20060103T000000Z" | |
2623 | end="20060105T000000Z"/> | |
2624 | </C:comp-filter> | |
2625 | </C:comp-filter> | |
2626 | </C:filter> | |
2627 | </C:calendar-query> | |
2628 | ||
2629 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2644 | <D:multistatus xmlns:D="DAV:" | |
2645 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2646 | <D:response> | |
2647 | <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> | |
2648 | <D:propstat> | |
2649 | <D:prop> | |
2650 | <D:getetag>"fffff-abcd2"</D:getetag> | |
2651 | <C:calendar-data>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 | </C:calendar-data> | |
2672 | </D:prop> | |
2673 | <D:status>HTTP/1.1 200 OK</D:status> | |
2674 | </D:propstat> | |
2675 | </D:response> | |
2676 | <D:response> | |
2677 | <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> | |
2678 | <D:propstat> | |
2679 | <D:prop> | |
2680 | <D:getetag>"fffff-abcd3"</D:getetag> | |
2681 | <C:calendar-data>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 | </C:calendar-data> | |
2708 | </D:prop> | |
2709 | <D:status>HTTP/1.1 200 OK</D:status> | |
2710 | </D:propstat> | |
2711 | </D:response> | |
2712 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2777 | <C:calendar-query xmlns:D="DAV:" | |
2778 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2779 | <D:prop> | |
2780 | <C:calendar-data> | |
2781 | <C:limit-freebusy-set start="20060102T000000Z" | |
2782 | end="20060103T000000Z"/> | |
2783 | </C:calendar-data> | |
2784 | </D:prop> | |
2785 | <C:filter> | |
2786 | <C:comp-filter name="VCALENDAR"> | |
2787 | <C:comp-filter name="VFREEBUSY"> | |
2788 | <C:time-range start="20060102T000000Z" | |
2789 | end="20060103T000000Z"/> | |
2790 | </C:comp-filter> | |
2791 | </C:comp-filter> | |
2792 | </C:filter> | |
2793 | </C:calendar-query> | |
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 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2819 | <D:multistatus xmlns:D="DAV:" | |
2820 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2821 | <D:response> | |
2822 | <D:href>http://cal.example.com/bernard/work/abcd8.ics</D:href> | |
2823 | <D:propstat> | |
2824 | <D:prop> | |
2825 | <D:getetag>"fffff-abcd8"</D:getetag> | |
2826 | <C:calendar-data>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 | </C:calendar-data> | |
2839 | </D:prop> | |
2840 | <D:status>HTTP/1.1 200 OK</D:status> | |
2841 | </D:propstat> | |
2842 | </D:response> | |
2843 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2884 | <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2885 | <D:prop xmlns:D="DAV:"> | |
2886 | <D:getetag/> | |
2887 | <C:calendar-data/> | |
2888 | </D:prop> | |
2889 | <C:filter> | |
2890 | <C:comp-filter name="VCALENDAR"> | |
2891 | <C:comp-filter name="VTODO"> | |
2892 | <C:comp-filter name="VALARM"> | |
2893 | <C:time-range start="20060106T100000Z" | |
2894 | end="20060107T100000Z"/> | |
2895 | </C:comp-filter> | |
2896 | </C:comp-filter> | |
2897 | </C:comp-filter> | |
2898 | </C:filter> | |
2899 | </C:calendar-query> | |
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 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2931 | <D:multistatus xmlns:D="DAV:" | |
2932 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2933 | <D:response> | |
2934 | <D:href>http://cal.example.com/bernard/work/abcd4.ics</D:href> | |
2935 | <D:propstat> | |
2936 | <D:prop> | |
2937 | <D:getetag>"fffff-abcd4"</D:getetag> | |
2938 | <C:calendar-data>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 | </C:calendar-data> | |
2956 | </D:prop> | |
2957 | <D:status>HTTP/1.1 200 OK</D:status> | |
2958 | </D:propstat> | |
2959 | </D:response> | |
2960 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
2988 | <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
2989 | <D:prop xmlns:D="DAV:"> | |
2990 | <D:getetag/> | |
2991 | <C:calendar-data/> | |
2992 | </D:prop> | |
2993 | <C:filter> | |
2994 | <C:comp-filter name="VCALENDAR"> | |
2995 | <C:comp-filter name="VEVENT"> | |
2996 | <C:prop-filter name="UID"> | |
2997 | <C:text-match collation="i;octet" | |
2998 | >DC6C50A017428C5216A2F1CD@example.com</C:text-match> | |
2999 | </C:prop-filter> | |
3000 | </C:comp-filter> | |
3001 | </C:comp-filter> | |
3002 | </C:filter> | |
3003 | </C:calendar-query> | |
3004 | ||
3005 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3013 | <D:multistatus xmlns:D="DAV:" | |
3014 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3015 | <D:response> | |
3016 | <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> | |
3017 | <D:propstat> | |
3018 | <D:prop> | |
3019 | <D:getetag>"fffff-abcd3"</D:getetag> | |
3020 | <C:calendar-data>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 | </C:calendar-data> | |
3065 | </D:prop> | |
3066 | <D:status>HTTP/1.1 200 OK</D:status> | |
3067 | </D:propstat> | |
3068 | </D:response> | |
3069 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3100 | <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3101 | <D:prop xmlns:D="DAV:"> | |
3102 | <D:getetag/> | |
3103 | <C:calendar-data/> | |
3104 | </D:prop> | |
3105 | <C:filter> | |
3106 | <C:comp-filter name="VCALENDAR"> | |
3107 | <C:comp-filter name="VEVENT"> | |
3108 | <C:prop-filter name="ATTENDEE"> | |
3109 | <C:text-match collation="i;ascii-casemap" | |
3110 | >mailto:lisa@example.com</C:text-match> | |
3111 | <C:param-filter name="PARTSTAT"> | |
3112 | <C:text-match collation="i;ascii-casemap" | |
3113 | >NEEDS-ACTION</C:text-match> | |
3114 | </C:param-filter> | |
3115 | </C:prop-filter> | |
3116 | </C:comp-filter> | |
3117 | </C:comp-filter> | |
3118 | </C:filter> | |
3119 | </C:calendar-query> | |
3120 | ||
3121 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3129 | <D:multistatus xmlns:D="DAV:" | |
3130 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3131 | <D:response> | |
3132 | <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> | |
3133 | <D:propstat> | |
3134 | <D:prop> | |
3135 | <D:getetag>"fffff-abcd3"</D:getetag> | |
3136 | <C:calendar-data>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 | </C:calendar-data> | |
3181 | </D:prop> | |
3182 | <D:status>HTTP/1.1 200 OK</D:status> | |
3183 | </D:propstat> | |
3184 | </D:response> | |
3185 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3212 | <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3213 | <D:prop xmlns:D="DAV:"> | |
3214 | <D:getetag/> | |
3215 | <C:calendar-data/> | |
3216 | </D:prop> | |
3217 | <C:filter> | |
3218 | <C:comp-filter name="VCALENDAR"> | |
3219 | <C:comp-filter name="VEVENT"/> | |
3220 | </C:comp-filter> | |
3221 | </C:filter> | |
3222 | </C:calendar-query> | |
3223 | ||
3224 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3232 | <D:multistatus xmlns:D="DAV:" | |
3233 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3234 | <D:response> | |
3235 | <D:href>http://cal.example.com/bernard/work/abcd1.ics</D:href> | |
3236 | <D:propstat> | |
3237 | <D:prop> | |
3238 | <D:getetag>"fffff-abcd1"</D:getetag> | |
3239 | <C:calendar-data>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 | </C:calendar-data> | |
3278 | </D:prop> | |
3279 | <D:status>HTTP/1.1 200 OK</D:status> | |
3280 | </D:propstat> | |
3281 | </D:response> | |
3282 | <D:response> | |
3283 | <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> | |
3284 | <D:propstat> | |
3285 | <D:prop> | |
3286 | <D:getetag>"fffff-abcd2"</D:getetag> | |
3287 | <C:calendar-data>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 | </C:calendar-data> | |
3342 | </D:prop> | |
3343 | <D:status>HTTP/1.1 200 OK</D:status> | |
3344 | </D:propstat> | |
3345 | </D:response> | |
3346 | <D:response> | |
3347 | <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> | |
3348 | <D:propstat> | |
3349 | <D:prop> | |
3350 | <D:getetag>"fffff-abcd3"</D:getetag> | |
3351 | <C:calendar-data>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 | </C:calendar-data> | |
3396 | </D:prop> | |
3397 | <D:status>HTTP/1.1 200 OK</D:status> | |
3398 | </D:propstat> | |
3399 | </D:response> | |
3400 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3436 | <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3437 | <D:prop xmlns:D="DAV:"> | |
3438 | <D:getetag/> | |
3439 | <C:calendar-data/> | |
3440 | </D:prop> | |
3441 | <C:filter> | |
3442 | <C:comp-filter name="VCALENDAR"> | |
3443 | <C:comp-filter name="VTODO"> | |
3444 | <C:prop-filter name="COMPLETED"> | |
3445 | <C:is-not-defined/> | |
3446 | </C:prop-filter> | |
3447 | <C:prop-filter name="STATUS"> | |
3448 | <C:text-match | |
3449 | negate-condition="yes">CANCELLED</C:text-match> | |
3450 | </C:prop-filter> | |
3451 | </C:comp-filter> | |
3452 | </C:comp-filter> | |
3453 | </C:filter> | |
3454 | </C:calendar-query> | |
3455 | ||
3456 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3464 | <D:multistatus xmlns:D="DAV:" | |
3465 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3466 | <D:response> | |
3467 | <D:href>http://cal.example.com/bernard/work/abcd4.ics</D:href> | |
3468 | <D:propstat> | |
3469 | <D:prop> | |
3470 | <D:getetag>"fffff-abcd4"</D:getetag> | |
3471 | <C:calendar-data>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 | </C:calendar-data> | |
3495 | </D:prop> | |
3496 | <D:status>HTTP/1.1 200 OK</D:status> | |
3497 | </D:propstat> | |
3498 | </D:response> | |
3499 | ||
3500 | <D:response> | |
3501 | <D:href>http://cal.example.com/bernard/work/abcd5.ics</D:href> | |
3502 | <D:propstat> | |
3503 | <D:prop> | |
3504 | <D:getetag>"fffff-abcd5"</D:getetag> | |
3505 | <C:calendar-data>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 | </C:calendar-data> | |
3523 | </D:prop> | |
3524 | <D:status>HTTP/1.1 200 OK</D:status> | |
3525 | </D:propstat> | |
3526 | </D:response> | |
3527 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3557 | <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3558 | <D:prop xmlns:D="DAV:"> | |
3559 | <D:getetag/> | |
3560 | <C:calendar-data/> | |
3561 | </D:prop> | |
3562 | <C:filter> | |
3563 | <C:comp-filter name="VCALENDAR"> | |
3564 | <C:comp-filter name="VEVENT"> | |
3565 | <C:prop-filter name="X-ABC-GUID"> | |
3566 | <C:text-match>ABC</C:text-match> | |
3567 | </C:prop-filter> | |
3568 | </C:comp-filter> | |
3569 | </C:comp-filter> | |
3570 | </C:filter> | |
3571 | </C:calendar-query> | |
3572 | ||
3573 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3581 | <D:error> | |
3582 | <C:supported-filter> | |
3583 | <C:prop-filter name="X-ABC-GUID"/> | |
3584 | </C:supported-filter> | |
3585 | </D:error> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3684 | <C:calendar-multiget xmlns:D="DAV:" | |
3685 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3686 | <D:prop> | |
3687 | <D:getetag/> | |
3688 | <C:calendar-data/> | |
3689 | </D:prop> | |
3690 | <D:href>/bernard/work/abcd1.ics</D:href> | |
3691 | <D:href>/bernard/work/mtg1.ics</D:href> | |
3692 | </C:calendar-multiget> | |
3693 | ||
3694 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3710 | <D:multistatus xmlns:D="DAV:" | |
3711 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3712 | <D:response> | |
3713 | <D:href>http://cal.example.com/bernard/work/abcd1.ics</D:href> | |
3714 | <D:propstat> | |
3715 | <D:prop> | |
3716 | <D:getetag>"fffff-abcd1"</D:getetag> | |
3717 | <C:calendar-data>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 | </C:calendar-data> | |
3748 | </D:prop> | |
3749 | <D:status>HTTP/1.1 200 OK</D:status> | |
3750 | </D:propstat> | |
3751 | </D:response> | |
3752 | <D:response> | |
3753 | <D:href>http://cal.example.com/bernard/work/mtg1.ics</D:href> | |
3754 | <D:status>HTTP/1.1 404 Not Found</D:status> | |
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 | </D:response> | |
3764 | </D:multistatus> | |
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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
3894 | <C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
3895 | <C:time-range start="20060104T140000Z" | |
3896 | end="20060105T220000Z"/> | |
3897 | </C:free-busy-query> | |
3898 | ||
3899 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
4050 | <C:calendar-query xmlns:D="DAV:" | |
4051 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
4052 | <D:prop> | |
4053 | <D:getetag/> | |
4054 | </D:prop> | |
4055 | <C:filter> | |
4056 | <C:comp-filter name="VCALENDAR"> | |
4057 | <C:comp-filter name="VEVENT"> | |
4058 | <C:time-range start="20040902T000000Z" | |
4059 | end="20040903T000000Z"/> | |
4060 | </C:comp-filter> | |
4061 | </C:comp-filter> | |
4062 | </C:filter> | |
4063 | </C:calendar-query> | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
4079 | <C:calendar-multiget xmlns:D="DAV:" | |
4080 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
4081 | <D:prop> | |
4082 | <D:getetag/> | |
4083 | <C:calendar-data/> | |
4084 | </D:prop> | |
4085 | <D:href>/bernard/work/abcd1.ics</D:href> | |
4086 | <D:href>/bernard/work/mtg1.ics</D:href> | |
4087 | </C:calendar-multiget> | |
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=""vCard MIME Directory Profile"">RFC2426</a>] or LDAP [<a href="http://tools.ietf.org/html/rfc4511" title=""Lightweight Directory Access Protocol (LDAP): The Protocol"">RFC4511</a>] standards | |
4170 | together with calendar attributes [<a href="http://tools.ietf.org/html/rfc2739" title=""Calendar Attributes for vCard and LDAP"">RFC2739</a>]. | |
4171 | ||
4172 | Because CalDAV requires servers to support WebDAV ACL [<a href="http://tools.ietf.org/html/rfc3744" title=""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744</a>], | |
4173 | including principal namespaces, and with the addition of the CALDAV: | |
4174 | calendar-home-set property, there are a couple options for CalDAV | |
4175 | clients to find one's own calendar or another user's calendar. | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
4183 | <D:principal-match xmlns:D="DAV:"> | |
4184 | <D:self/> | |
4185 | <D:prop> | |
4186 | <C:calendar-home-set | |
4187 | xmlns:C="urn:ietf:params:xml:ns:caldav"/> | |
4188 | </D:prop> | |
4189 | </D:principal-match> | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
4212 | <D:principal-property-search xmlns:D="DAV:"> | |
4213 | <D:property-search> | |
4214 | <D:prop> | |
4215 | <D:displayname/> | |
4216 | </D:prop> | |
4217 | <D:match>Laurie</D:match> | |
4218 | </D:property-search> | |
4219 | <D:prop> | |
4220 | <C:calendar-home-set | |
4221 | xmlns:C="urn:ietf:params:xml:ns:caldav"/> | |
4222 | <D:displayname/> | |
4223 | </D:prop> | |
4224 | </D:principal-property-search> | |
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=""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445</a>]. CalDAV servers MUST support inline attachments, | |
4242 | so clients can rely on being able to create attachments this way. On | |
4243 | the other hand, inline attachments have some drawbacks: | |
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=""Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections"">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 | <!ELEMENT calendar EMPTY> | |
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 | <!ELEMENT mkcalendar (DAV:set)> | |
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 | <!ELEMENT mkcalendar-response ANY> | |
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=""Internet Application Protocol Collation Registry"">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 | <!ELEMENT supported-collation (#PCDATA)> | |
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 | <!ELEMENT calendar-query ((DAV:allprop | | |
4480 | DAV:propname | | |
4481 | DAV:prop)?, filter, timezone?)> | |
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 &lt;, &gt;, &amp; etc. entity encoding or | |
4550 | the use of a <![CDATA[ ... ]]> construct. In the later case, the | |
4551 | iCalendar data cannot contain the character sequence "]]>", which | |
4552 | is the end delimiter for the CDATA section. | |
4553 | ||
4554 | Definition: | |
4555 | ||
4556 | <!ELEMENT calendar-data EMPTY> | |
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 | <!ELEMENT calendar-data (comp?, | |
4563 | (expand | limit-recurrence-set)?, | |
4564 | limit-freebusy-set?)> | |
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 | <!ELEMENT calendar-data (#PCDATA)> | |
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 | <!ATTLIST calendar-data content-type CDATA "text/calendar" | |
4578 | version CDATA "2.0"> | |
4579 | content-type value: a MIME media type | |
4580 | version value: a version string | |
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 | <!ELEMENT comp ((allprop | prop*), (allcomp | comp*))> | |
4609 | ||
4610 | <!ATTLIST comp name CDATA #REQUIRED> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518</a>]. | |
4615 | However, the CALDAV:prop and CALDAV:allprop elements are defined | |
4616 | in the "urn:ietf:params:xml:ns:caldav" namespace instead of the | |
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 | <!ELEMENT allcomp EMPTY> | |
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 | <!ELEMENT allprop EMPTY> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518</a>]. However, the CALDAV:allprop | |
4661 | element is defined in the "urn:ietf:params:xml:ns:caldav" | |
4662 | namespace instead of the "DAV:" namespace. | |
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 | <!ELEMENT prop EMPTY> | |
4683 | ||
4684 | <!ATTLIST prop name CDATA #REQUIRED | |
4685 | novalue (yes | no) "no"> | |
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=""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518</a>]. However, the CALDAV:prop element is | |
4691 | defined in the "urn:ietf:params:xml:ns:caldav" namespace instead | |
4692 | of the "DAV:" namespace. | |
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 | <!ELEMENT expand EMPTY> | |
4741 | ||
4742 | <!ATTLIST expand start CDATA #REQUIRED | |
4743 | end CDATA #REQUIRED> | |
4744 | start value: an iCalendar "date with UTC time" | |
4745 | end value: an iCalendar "date with UTC time" | |
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 | <!ELEMENT limit-recurrence-set EMPTY> | |
4797 | ||
4798 | <!ATTLIST limit-recurrence-set start CDATA #REQUIRED | |
4799 | end CDATA #REQUIRED> | |
4800 | start value: an iCalendar "date with UTC time" | |
4801 | end value: an iCalendar "date with UTC time" | |
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 | <!ELEMENT limit-freebusy-set EMPTY> | |
4838 | ||
4839 | <!ATTLIST limit-freebusy-set start CDATA #REQUIRED | |
4840 | end CDATA #REQUIRED> | |
4841 | start value: an iCalendar "date with UTC time" | |
4842 | end value: an iCalendar "date with UTC time" | |
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 | <!ELEMENT filter (comp-filter)> | |
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 | <!ELEMENT comp-filter (is-not-defined | (time-range?, | |
4915 | prop-filter*, comp-filter*))> | |
4916 | ||
4917 | <!ATTLIST comp-filter name CDATA #REQUIRED> | |
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 | <!ELEMENT prop-filter (is-not-defined | | |
4970 | ((time-range | text-match)?, | |
4971 | param-filter*))> | |
4972 | ||
4973 | <!ATTLIST prop-filter name CDATA #REQUIRED> | |
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 | <!ELEMENT param-filter (is-not-defined | text-match?)> | |
5012 | ||
5013 | <!ATTLIST param-filter name CDATA #REQUIRED> | |
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 | <!ELEMENT is-not-defined EMPTY> | |
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 | <!ELEMENT text-match (#PCDATA)> | |
5070 | PCDATA value: string | |
5071 | ||
5072 | <!ATTLIST text-match collation CDATA "i;ascii-casemap" | |
5073 | negate-condition (yes | no) "no"> | |
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 &lt;, &gt;, &amp; etc. entity encoding or | |
5098 | the use of a <![CDATA[ ... ]]> 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 "]]>", which | |
5108 | is the end delimiter for the CDATA section. | |
5109 | ||
5110 | Definition: | |
5111 | ||
5112 | <!ELEMENT timezone (#PCDATA)> | |
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=""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445</a>], the DTSTART | |
5152 | property is REQUIRED in the VEVENT component. The conditions | |
5153 | depend on the presence of the DTEND and DURATION properties in the | |
5154 | VEVENT component. Furthermore, the value of the DTEND property | |
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 < DTEND AND end > DTSTART) | | |
5180 | +---+---+---+---+-----------------------------------------------+ | |
5181 | | N | Y | Y | * | (start < DTSTART+DURATION AND end > DTSTART) | | |
5182 | | | +---+---+-----------------------------------------------+ | |
5183 | | | | N | * | (start <= DTSTART AND end > DTSTART) | | |
5184 | +---+---+---+---+-----------------------------------------------+ | |
5185 | | N | N | N | Y | (start <= DTSTART AND end > DTSTART) | | |
5186 | +---+---+---+---+-----------------------------------------------+ | |
5187 | | N | N | N | N | (start < DTSTART+P1D AND end > DTSTART) | | |
5188 | +---+---+---+---+-----------------------------------------------+ | |
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=""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445</a>], the | |
5195 | DUE value MUST be a DATE-TIME value equal to or after the DTSTART | |
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 <= DTSTART+DURATION) AND | | |
5233 | | | | | | | ((end > DTSTART) OR | | |
5234 | | | | | | | (end >= DTSTART+DURATION)) | | |
5235 | +---+---+---+---+---+-----------------------------------------------+ | |
5236 | | Y | N | Y | * | * | ((start < DUE) OR (start <= DTSTART)) | | |
5237 | | | | | | | AND | | |
5238 | | | | | | | ((end > DTSTART) OR (end >= DUE)) | | |
5239 | +---+---+---+---+---+-----------------------------------------------+ | |
5240 | | Y | N | N | * | * | (start <= DTSTART) AND (end > DTSTART) | | |
5241 | +---+---+---+---+---+-----------------------------------------------+ | |
5242 | | N | N | Y | * | * | (start < DUE) AND (end >= DUE) | | |
5243 | +---+---+---+---+---+-----------------------------------------------+ | |
5244 | | N | N | N | Y | Y | ((start <= CREATED) OR (start <= COMPLETED))| | |
5245 | | | | | | | AND | | |
5246 | | | | | | | ((end >= CREATED) OR (end >= COMPLETED))| | |
5247 | +---+---+---+---+---+-----------------------------------------------+ | |
5248 | | N | N | N | Y | N | (start <= COMPLETED) AND (end >= COMPLETED) | | |
5249 | +---+---+---+---+---+-----------------------------------------------+ | |
5250 | | N | N | N | N | Y | (end > CREATED) | | |
5251 | +---+---+---+---+---+-----------------------------------------------+ | |
5252 | | N | N | N | N | N | TRUE | | |
5253 | +---+---+---+---+---+-----------------------------------------------+ | |
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 <= DTSTART) AND (end > DTSTART) | | |
5283 | +---+---+--------------------------------------------+ | |
5284 | | Y | N | (start < DTSTART+P1D) AND (end > 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 <= DTEND) AND (end > DTSTART) | | |
5311 | +---+---+----------------------------------------------+ | |
5312 | | N | Y | (start < freebusy-period-end) AND | | |
5313 | | | | (end > 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 <= trigger-time) AND (end > 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 <= date-time) AND (end > 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 | <!ELEMENT time-range EMPTY> | |
5353 | ||
5354 | <!ATTLIST time-range start CDATA #IMPLIED | |
5355 | end CDATA #IMPLIED> | |
5356 | start value: an iCalendar "date with UTC time" | |
5357 | end value: an iCalendar "date with UTC time" | |
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 | <!ELEMENT calendar-multiget ((DAV:allprop | | |
5373 | DAV:propname | | |
5374 | DAV:prop)?, DAV:href+)> | |
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 | <!ELEMENT free-busy-query (time-range)> | |
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=""HTTP Over TLS"">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=""Internet Calendaring and Scheduling Core Object Specification (iCalendar)"">RFC2445</a>] and iTIP | |
5458 | [<a href="http://tools.ietf.org/html/rfc2446" title=""iCalendar Transport-Independent Interoperability Protocol (iTIP) Scheduling Events, BusyTime, To-dos and Journal Entries"">RFC2446</a>] are also applicable to CalDAV. | |
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=""Hypertext Transfer Protocol -- HTTP/1.1"">RFC2616</a>] and WebDAV [<a href="http://tools.ietf.org/html/rfc2518" title=""HTTP Extensions for Distributed Authoring -- WEBDAV"">RFC2518</a>], [<a href="http://tools.ietf.org/html/rfc3253" title=""Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning)"">RFC3253</a>], | |
5462 | [<a href="http://tools.ietf.org/html/rfc3744" title=""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">RFC3744</a>]. | |
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=""The IETF XML Registry"">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 | <<a href="http://www.w3.org/TR/2006/REC-xml-20060816">http://www.w3.org/TR/2006/REC-xml-20060816</a>>. | |
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&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=""Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol"">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 | >> Request << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
5642 | <C:calendar-query xmlns:D="DAV:" | |
5643 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
5644 | <D:prop> | |
5645 | <D:getetag/> | |
5646 | <C:calendar-data/> | |
5647 | </D:prop> | |
5648 | <C:filter> | |
5649 | <C:comp-filter name="VCALENDAR"/> | |
5650 | </C:filter> | |
5651 | </C:calendar-query> | |
5652 | ||
5653 | >> Response << | |
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 | <?xml version="1.0" encoding="utf-8" ?> | |
5668 | <D:multistatus xmlns:D="DAV:" | |
5669 | xmlns:C="urn:ietf:params:xml:ns:caldav"> | |
5670 | ||
5671 | <D:response> | |
5672 | <D:href>http://cal.example.com/bernard/work/abcd1.ics</D:href> | |
5673 | <D:propstat> | |
5674 | <D:prop> | |
5675 | <D:getetag>"fffff-abcd1"</D:getetag> | |
5676 | <C:calendar-data>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 | </C:calendar-data> | |
5707 | </D:prop> | |
5708 | <D:status>HTTP/1.1 200 OK</D:status> | |
5709 | </D:propstat> | |
5710 | </D:response> | |
5711 | ||
5712 | <D:response> | |
5713 | <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> | |
5714 | <D:propstat> | |
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 | <D:prop> | |
5724 | <D:getetag>"fffff-abcd2"</D:getetag> | |
5725 | <C:calendar-data>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 | </C:calendar-data> | |
5764 | </D:prop> | |
5765 | <D:status>HTTP/1.1 200 OK</D:status> | |
5766 | </D:propstat> | |
5767 | </D:response> | |
5768 | ||
5769 | <D:response> | |
5770 | <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> | |
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 | <D:propstat> | |
5780 | <D:prop> | |
5781 | <D:getetag>"fffff-abcd3"</D:getetag> | |
5782 | <C:calendar-data>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 | </C:calendar-data> | |
5818 | </D:prop> | |
5819 | <D:status>HTTP/1.1 200 OK</D:status> | |
5820 | </D:propstat> | |
5821 | </D:response> | |
5822 | ||
5823 | <D:response> | |
5824 | <D:href>http://cal.example.com/bernard/work/abcd4.ics</D:href> | |
5825 | <D:propstat> | |
5826 | <D:prop> | |
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 | <D:getetag>"fffff-abcd4"</D:getetag> | |
5836 | <C:calendar-data>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 | </C:calendar-data> | |
5852 | </D:prop> | |
5853 | <D:status>HTTP/1.1 200 OK</D:status> | |
5854 | </D:propstat> | |
5855 | </D:response> | |
5856 | ||
5857 | <D:response> | |
5858 | <D:href>http://cal.example.com/bernard/work/abcd5.ics</D:href> | |
5859 | <D:propstat> | |
5860 | <D:prop> | |
5861 | <D:getetag>"fffff-abcd5"</D:getetag> | |
5862 | <C:calendar-data>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 | </C:calendar-data> | |
5880 | </D:prop> | |
5881 | <D:status>HTTP/1.1 200 OK</D:status> | |
5882 | </D:propstat> | |
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 | </D:response> | |
5892 | ||
5893 | <D:response> | |
5894 | <D:href>http://cal.example.com/bernard/work/abcd6.ics</D:href> | |
5895 | <D:propstat> | |
5896 | <D:prop> | |
5897 | <D:getetag>"fffff-abcd6"</D:getetag> | |
5898 | <C:calendar-data>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 | </C:calendar-data> | |
5913 | </D:prop> | |
5914 | <D:status>HTTP/1.1 200 OK</D:status> | |
5915 | </D:propstat> | |
5916 | </D:response> | |
5917 | ||
5918 | <D:response> | |
5919 | <D:href>http://cal.example.com/bernard/work/abcd7.ics</D:href> | |
5920 | <D:propstat> | |
5921 | <D:prop> | |
5922 | <D:getetag>"fffff-abcd7"</D:getetag> | |
5923 | <C:calendar-data>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 | </C:calendar-data> | |
5937 | </D:prop> | |
5938 | <D:status>HTTP/1.1 200 OK</D:status> | |
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 | </D:propstat> | |
5948 | </D:response> | |
5949 | ||
5950 | <D:response> | |
5951 | <D:href>http://cal.example.com/bernard/work/abcd8.ics</D:href> | |
5952 | <D:propstat> | |
5953 | <D:prop> | |
5954 | <D:getetag>"fffff-abcd8"</D:getetag> | |
5955 | <C:calendar-data>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 | </C:calendar-data> | |
5973 | </D:prop> | |
5974 | <D:status>HTTP/1.1 200 OK</D:status> | |
5975 | </D:propstat> | |
5976 | </D:response> | |
5977 | ||
5978 | </D:multistatus> | |
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 | ||
6003 | Authors' 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 | ||
6059 | Full 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 | ||
6075 | Intellectual 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 | ||
6099 | Acknowledgement | |
6100 | ||
6101 | Funding for the RFC Editor function is currently provided by the | |
6102 | Internet Society. | |
6103 | ||
6104 | ||
6105 | ||
6106 | ||
6107 | ||
6108 | ||
6109 | ||
6110 | Daboo, 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> |