egroupware/doc/REST-CalDAV-CardDAV
2023-08-17 18:47:48 +02:00
..
Addressbook.md * Calendar: new REST API to read, create, modify and delete events, see https://github.com/EGroupware/egroupware/blob/master/doc/REST-CalDAV-CardDAV/Calendar.md 2023-07-24 17:08:18 +02:00
Calendar.md small docu update for Calendar REST APi 2023-07-25 10:28:26 +02:00
Mail.md add warning to use --data-binary when uploading attachments with curl 2023-08-17 18:47:48 +02:00
README.md fix error, if there is no old vacation specifying a number of days, setting now same default as UI: 3 days 2023-08-02 11:02:15 +02:00

EGroupware CalDAV/CardDAV server and REST API

CalDAV/CardDAV is build on HTTP and WebDAV, implementing the following additional RFCs containing documentation of the protocol:

Path / URL layout for CalDAV/CardDAV and REST is identical

One can use the following URLs relative (!) to https://example.org/egroupware/groupdav.php

  • / base of Cal|Card|GroupDAV tree, only certain clients (KDE, Apple) can autodetect folders from here
  • /principals/ principal-collection-set for WebDAV ACL
  • /principals/users/<username>/
  • /principals/groups/<groupname>/
  • /<username>/ users home-set with
  • /<username>/addressbook/ addressbook of user or group given the user has rights to view it
  • /<current-username>/addressbook-<other-username>/ shared addressbooks from other user or group
  • /<current-username>/addressbook-accounts/ all accounts current user has rights to see
  • /<username>/calendar/ calendar of user given the user has rights to view it
  • /<username>/calendar/?download download whole calendar as .ics file (GET request!)
  • /<current-username>/calendar-<other-username>/ shared calendar from other user or group (only current !)
  • /<username>/inbox/ scheduling inbox of user
  • /<username>/outbox/ scheduling outbox of user
  • /<username>/infolog/ InfoLog's of user given the user has rights to view it
  • /addressbook/ all addressbooks current user has rights to, announced as directory-gateway now
  • /addressbook-accounts/ all accounts current user has rights to see
  • /calendar/ calendar of current user
  • /infolog/ infologs of current user
  • /(resources|locations)/<resource-name>/calendar calendar of a resource/location, if user has rights to view
  • /<current-username>/(resource|location)-<resource-name> shared calendar from a resource/location
  • /mail/ REST API only

Shared addressbooks or calendars are only shown in the users home-set, if he subscribed to it via his CalDAV preferences!

Calling one of the above collections with a GET request / regular browser generates an automatic index from the data of an allprop PROPFIND, allow browsing CalDAV/CardDAV tree with a regular browser.

REST API: using EGroupware CalDAV/CardDAV server with JSON

  • Addressbook
  • Calendar (currently recurring events are readonly, they are returned but can not be created or modified)
  • Mail (currently only sending mails, opening interactive compose windows and vacation handling)

For the REST API you always have to send an "Accept: application/json" header and for POST & PUT requests additionally a "Content-Type: application/json" header, otherwise you talk to the CalDAV/CardDAV server and don't get the response you expect!

Following RFCs / drafts used/planned for JSON encoding of resources

ToDos

  • Addressbook
    • update of photos, keys, attachments
  • InfoLog
  • Calendar (recurring events and alarms are readonly)
    • support creating and modifying recurring events and alarms
  • Mail
    • querying received mails
  • relatedTo / links
  • storing not native supported attributes eg. localization