egroupware/doc/REST-CalDAV-CardDAV
ralf ef43d7298b * Mail/REST API: support an "X-No-Location: true" header to avoid getting a "Location" header when uploading attachments
Also change HTTP Status from "200 Ok" to "201 Created" for a "Location" header,
and send a correct URL to download the attachment again with a GET request.
2023-11-10 17:07:06 +02:00
..
Addressbook.md * Addressbook/REST API: allow to pass filters or a search pattern to addressbook REST API 2023-10-19 21:34:38 +03:00
Calendar.md * Calendar/REST API: adding of participants to events 2023-09-18 14:13:25 +02:00
Mail.md * Mail/REST API: support an "X-No-Location: true" header to avoid getting a "Location" header when uploading attachments 2023-11-10 17:07:06 +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