CalDAV (Calendaring Extensions to WebDAV) est une extension à WebDAV définie par l'Internet Engineering Task Force.
Décrit dans la RFC 4791[1], CalDAV définit un protocole d'édition de calendrier en ligne. Son concurrent, le protocole Web Calendar Access Protocol, définit le partage de fichiers au format iCalendar utilisant WebDAV. CalDAV contrairement à ce dernier, n'est pas un partage de fichiers calendriers, mais d'évènements. Un calendrier est, dans CalDAV, un dossier contenant des évènements, des tâches... Chaque évènement est transmis sous la forme d'un fichier VEVENT, VTASK.
Il est donc possible, contrairement à Web Calendar Access Protocol de manipuler un seul élément sans avoir à échanger l'ensemble du calendrier.
CalDAV regroupe au sein d'un même usage plusieurs extensions à WebDAV : WebDAV ACL pour les droits d'accès. On peut noter que l'élément atomique étant l'évènement, on peut définir des droits différents pour chaque évènement ; le protocole internet Delta-v définissant un protocole de gestion de version sur WebDAV.
Un calendrier étant un dossier (une collection au sens WebDAV) ne contenant que des éléments de calendrier, CalDAV définit un verbe supplémentaire pour la création d'un calendrier : MKCALENDAR.
Demande HTTP:
REPORT /bernard/work/ HTTP/1.1 Host: cal.example.com Depth: 1 Content-Type: application/xml; charset="utf-8" Content-Length: .... <?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>
Réponse HTTP:
HTTP/1.1 200 OK Date: Sat, 11 Nov 2006 09:32:12 GMT Content-Type: text/calendar Content-Length: .... 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
La liste de clients CalDAV comprend :
La liste de serveurs CalDAV comprend[3] :