# RFC 4791 (CalDAV) ## ☑ 1. Introduction ### ☑ 1.1 Notational Conventions ### ☑ 1.2 XML Namespaces and Processing ### ☐ 1.3 Method Preconditions and Postconditions ## ☐ 2. Requirements Overview - [x] MUST support iCalendar [RFC2445] as a media type for the calendar object resource format; - [ ] MUST support WebDAV Class 1 [RFC2518] (note that [rfc2518bis] describes clarifications to [RFC2518] that aid interoperability); - [x] MUST support WebDAV ACL [RFC3744] with the additional privilege defined in Section 6.1 of this document; - [x] MUST support transport over TLS [RFC2246] as defined in [RFC2818] (note that [RFC2246] has been obsoleted by [RFC4346]); - [x] MUST support ETags [RFC2616] with additional requirements specified in Section 5.3.4 of this document; - [ ] MUST support all calendaring reports defined in Section 7 of this document; and - [x] MUST advertise support on all calendar collections and calendar object resources for the calendaring reports in the DAV:supported- report-set property, as defined in Versioning Extensions to WebDAV [RFC3253]. In addition, a server: - [x] SHOULD support the MKCALENDAR method defined in Section 5.3.1 of this document. ## ☑ 3. Calendaring Data Model ### ☑ 3.1 Calendar Server ### ☑ 3.2 Recurrence and the Data Model ## ☑ 4. Calendar Resources ### ☑ 4.1 Calendar Object Resources ### ☑ 4.2 Calendar Collection ## ☐ 5. Calendar Access Feature ### ☑ 5.1 Calendar Access Support #### ☑ 5.1.1 Example: Using OPTIONS for the Discovery of Calendar Access Support ### ☑ 5.2 Calendar Collection Properties #### ☑ 5.2.1 CALDAV:calendar-description Property #### ☑ 5.2.2 CALDAV:calendar-timezone Property #### ☑ 5.2.3 CALDAV:supported-calendar-component-set Property #### ☑ 5.2.4 CALDAV:supported-calendar-data Property #### ☑ 5.2.5 CALDAV:max-resource-size Property #### ☑ 5.2.6 CALDAV:min-date-time Property #### ☑ 5.2.7 CALDAV:max-date-time Property #### ☐ 5.2.8 CALDAV:max-instances Property (Maybe set this :)) #### ☑ 5.2.9 CALDAV:max-attendees-per-instance Property (does not apply) #### ☑ 5.2.10 Additional Precondition for PROPPATCH ### ☑ 5.3 Creating Resources #### ☑ 5.3.1 MKCALENDAR Method ##### ☑ 5.3.1.1 Status Codes ##### ☑ 5.3.1.2 Example: Successful MKCALENDAR Request - Example fails because of the tzid is not in the Olson database, but that's okay #### ☑ 5.3.2 Creating Calendar Object Resources ##### ☐ 5.3.2.1 Additional Preconditions for PUT, COPY, and MOVE ### ☑ 5.3.3 Non-Standard Components, Properties, and Parameters ### ☑ 5.3.4 Calendar Object Resource Entity Tag ## ☐ 6. Calendaring Access Control ### ☐ 6.1 Calendaring Privilege #### ☐ 6.1.1 CALDAV:read-free-busy Privilege ### ☑ 6.2 Additional Principal Property #### ☑ 6.2.1 CALDAV:calendar-home-set Property ## ☐ 7. Calendaring Reports - [ ] `DAV:expand-property` ### ☑ 7.1 REPORT Method ### ☑ 7.2 Ordinary Collections ### ☑ 7.3 Date and Floating Time ### ☑ 7.4 Time Range Filtering ### ☑ 7.5 Searching Text: Collations #### ☑ 7.5.1 CALDAV:supported-collation-set Property ### ☐ 7.6 Partial Retrieval ### ☑ 7.7 Non-Standard Components, Properties, and Parameters ### ☑ 7.8 CALDAV:calendar-query REPORT #### ☐ 7.8.1 Example: Partial Retrieval of Events by Time Range #### ☐ 7.8.2 Example: Partial Retrieval of Recurring Events #### ☐ 7.8.3 Example: Expanded Retrieval of Recurring Events #### ☐ 7.8.4 Example: Partial Retrieval of Stored Free Busy Components #### ☐ 7.8.5 Example: Retrieval of To-Dos by Alarm Time Range #### ☐ 7.8.6 Example: Retrieval of Event by UID #### ☐ 7.8.7 Example: Retrieval of Events by PARTSTAT #### ☐ 7.8.8 Example: Retrieval of Events Only #### ☐ 7.8.9 Example: Retrieval of All Pending To-Dos #### ☐ 7.8.10 Example: Attempt to Query Unsupported Property ### ☐ 7.9 CALDAV:calendar-multiget REPORT #### ☐ 7.9.1 Example: Successful CALDAV:calendar-multiget REPORT ### ☐ 7.10 CALDAV:free-busy-query REPORT #### ☐ 7.10.1 Example: Successful CALDAV:free-busy-query REPORT ## ☐ 8. Guidelines ### ☐ 8.1 Client-to-Client Interoperability ### ☐ 8.2 Synchronization Operations #### ☐ 8.2.1 Use of Reports ##### ☐ 8.2.1.1 Restrict the Time Range ##### ☐ 8.2.1.2 Synchronize by Time Range ##### ☐ 8.2.1.3 Synchronization Process #### ☐ 8.2.2 Restrict the Properties Returned ### ☐ 8.3 Use of Locking ### ☐ 8.4 Finding Calendars ### ☐ 8.5 Storing and Using Attachments #### ☐ 8.5.1 Inline Attachments #### ☐ 8.5.2 External Attachments ### ☐ 8.6 Storing and Using Alarms ## ☐ 9. XML Element Definitions ### ☐ 9.1 CALDAV:calendar XML Element ### ☐ 9.2 CALDAV:mkcalendar XML Element ### ☐ 9.3 CALDAV:mkcalendar-response XML Element ### ☐ 9.4 CALDAV:supported-collation XML Element ### ☐ 9.5 CALDAV:calendar-query XML Element ### ☐ 9.6 CALDAV:calendar-data XML Element #### ☐ 9.6.1 CALDAV:comp XML Element #### ☐ 9.6.2 CALDAV:allcomp XML Element #### ☐ 9.6.3 CALDAV:allprop XML Element #### ☐ 9.6.4 CALDAV:prop XML Element #### ☐ 9.6.5 CALDAV:expand XML Element #### ☐ 9.6.6 CALDAV:limit-recurrence-set XML Element #### ☐ 9.6.7 CALDAV:limit-freebusy-set XML Element ### ☐ 9.7 CALDAV:filter XML Element #### ☐ 9.7.1 CALDAV:comp-filter XML Element #### ☐ 9.7.2 CALDAV:prop-filter XML Element #### ☐ 9.7.3 CALDAV:param-filter XML Element #### ☐ 9.7.4 CALDAV:is-not-defined XML Element #### ☐ 9.7.5 CALDAV:text-match XML Element ### ☐ 9.8 CALDAV:timezone XML Element ### ☐ 9.9 CALDAV:time-range XML Element ### ☐ 9.10 CALDAV:calendar-multiget XML Element ### ☐ 9.11 CALDAV:free-busy-query XML Element ## ☐ 10. Internationalization Considerations ## ☐ 11. Security Considerations ## ☐ 12. IANA Considerations ### ☐ 12.1 Namespace Registration ## ☐ 13. Acknowledgements ## ☐ 14. References ### ☐ 14.1 Normative References ### ☐ 14.2 Informative References ## ☐ A. CalDAV Method Privilege Table (Normative) ## ☐ B. Calendar Collections Used in the Examples