Files
rustical/docs/developers/rfcs/rfc4791.md
2025-12-31 19:54:06 +01:00

6.1 KiB

RFC 4791 (CalDAV)

☑ 1. Introduction

☑ 1.1 Notational Conventions

☑ 1.2 XML Namespaces and Processing

☐ 1.3 Method Preconditions and Postconditions

☐ 2. Requirements Overview

  • 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);

  • MUST support WebDAV ACL [RFC3744] with the additional privilege defined in Section 6.1 of this document;

  • MUST support transport over TLS [RFC2246] as defined in [RFC2818] (note that [RFC2246] has been obsoleted by [RFC4346]);

  • 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

  • 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:

  • 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