CalDAV (англ. Calendaring Extensions to WebDAV) — сетевой протокол прикладного уровня, расширяющий возможности WebDAV и предназначенный для доступа, синхронизации и управления календарными данными. Он основан на формате iCalendar и позволяет клиентским приложениям взаимодействовать с календарными серверами по HTTP, поддерживая совместную работу, планирование встреч (англ. scheduling) и синхронизацию между устройствами. Протокол разработан как открытый стандарт и опубликован в 2007 году в виде RFC 4791 под эгидой IETF. Для расширения функций планирования используется RFC 6638, а управление доступом реализовано на основе RFC 3744.
В 2003 году Лиза Дюссо инициировала разработку спецификации CalDAV, представив её на рассмотрение Инженерному совету Интернета.
Спецификация вызвала интерес среди разработчиков календарного программного обеспечения. В январе 2005 года были успешно протестированы два сервера и три клиента, корректно взаимодействующие между собой.
В марте 2007 года CalDAV был официально опубликован IETF в качестве стандарта под номером RFC 4791 («Calendaring Extensions to WebDAV (CalDAV)»). Авторами спецификации стали Сайрус Дабу (Apple), Бернар Дезруиссо (Oracle) и Лиза Дюссо (CommerceNet).
CalDAV был впоследствии внедрён в ряд программных продуктов, ориентированных на управление календарями и событиями[источник?].
CalDAV представляет собой открытый стандарт, расширяющий протокол WebDAV и использующий формат iCalendar для обмена календарными данными между клиентскими приложениями и серверами.
Протокол предназначен для управления календарными событиями, включая встречи, расписания и другие записи, синхронизируемые между сервером и клиентом. Кроме того, CalDAV поддерживает создание так называемых «неличных» календарей, например, для помещений или групп пользователей. Для поддержки функций планирования встреч (англ. scheduling) используется расширение CalDAV, стандартизированное в RFC 6638.
Пользователь может синхронизировать свой календарь с сервером CalDAV и использовать его на нескольких устройствах. Протокол также поддерживает создание неличных календарей, таких как календари для комнат или организаций.
Данные CalDAV организуются в виде коллекций (каталогов), содержащих ресурсы: события, задачи, напоминания и свободное/занятое время. Для управления доступом используются ACL на основе WebDAV Access Control Protocol (RFC 3744), позволяющие задавать права (чтение, редактирование, удаление) для отдельных пользователей.
Сервер CalDAV должен уметь разбирать записи в формате iCalendar, поскольку это необходимо для выполнения специфических календарных операций — например, расширения повторяющихся событий или составления отчётов о занятости (англ. free-busy).
В то же время CalDAV подвергался критике за относительную сложность реализации, что может вызывать затруднения при интеграции с некоторыми программными продуктами.[источник?]
Несмотря на широкое распространение и поддержку в различных программных решениях, спецификации CalDAV и iCalendar подвергаются критике за устаревание и ограниченную применимость в корпоративной среде. В частности, исследователи из Университета Цинхуа отмечают, что текущие версии этих протоколов не учитывают ряд современных требований[1]:
В связи с этим, применение CalDAV в крупных организациях требует дополнительной реализации служебной логики на уровне серверной инфраструктуры или сторонней интеграции с корпоративными системами управления доступом и данными.
В качестве потенциальной замены формата iCalendar рассматривается jCal — структурированное представление календарных данных в формате JSON, стандартизированное в RFC 7265. jCal отличается лучшей читаемостью и удобством обработки, что делает его перспективным кандидатом для будущего развития календарных протоколов.[1]
Пример основан на RFC 4791:
Запрос:
REPORT /bernard/work/ HTTP/1.1 Host: cal.example.com Depth: 1 Content-Type: application/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav"> <C:time-range start="20060104T140000Z" end="20060105T220000Z"/> </C:free-busy-query>
Ответ:
HTTP/1.1 200 OK Date: Sat, 11 Nov 2006 09:32:12 GMT Content-Type: text/calendar Content-Length: xxxx BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Example Corp.//CalDAV Server//EN BEGIN:VFREEBUSY DTSTAMP:20050125T090000Z DTSTART:20060104T140000Z DTEND:20060105T220000Z FREEBUSY;FBTYPE=BUSY-TENTATIVE:20060104T150000Z/PT1H FREEBUSY:20060104T190000Z/PT1H END:VFREEBUSY END:VCALENDAR
Список CalDAV клиентов включает:[2]:
Список CalDAV серверов включает:[9]: