Files
bongo/docs/dav.md
T
2026-07-22 17:58:11 +02:00

2.0 KiB

CalDAV and CardDAV

Bongo exposes a user's calendar and address book through the Web service so Thunderbird and other DAV clients see the same objects as Bongo Webmail. Calendar resources are iCalendar documents; contact resources are vCards.

Discovery and paths

Clients may use /.well-known/caldav and /.well-known/carddav discovery. Authenticated homes use these forms:

/calendars/USER/personal/
/addressbooks/USER/personal/

Calendar objects end in .ics; address-book objects end in .vcf. The authenticated user may access only that user's home. Resource names are decoded and validated before being mapped to Store paths, preventing encoded slashes, traversal, NUL bytes, or another account name from escaping the personal collection.

HTTP and DAV behaviour

The service supports OPTIONS, GET, HEAD, PUT, DELETE, PROPFIND, and REPORT for the implemented calendar and address-book resources. Depth-aware multistatus responses describe the principal, home, personal collection, and objects. Calendar multiget/query and address-book multiget read the requested resources. ETags and If-Match/If-None-Match protect updates against accidental overwrite.

Incoming iCalendar and vCard payloads are parsed strictly and bounded by the Web request and object-size limits. Bongo preserves the canonical source data needed for lossless DAV round trips while also mapping useful fields into the Store model used by Webmail. Calendar events include recurrence and the standard date/time data supported by the converter; contacts include structured names, multiple email addresses and telephone numbers, organization, birthday/anniversary, URL, note, and postal address fields.

DAV authentication follows the Web master/app-password scope and external TLS policy. When a reverse proxy terminates TLS, it must pass DAV methods and bodies unchanged and use the same trusted-proxy configuration as Webmail. The release gate tests discovery, CRUD, reports, ETags, isolation, and TLS/proxy policy under DAV-01 through DAV-03.