CalDAV & CardDAV

The standard protocols for phones and desktop apps (/mail/dav/, HTTP Basic with an app password) and the read-only .ics subscription links (/mail/ics/<token>.ics, the token is the key).

MethodPathSummary
OPTIONS/dav/*CalDAV/CardDAV capabilities
ALL/dav/*CalDAV and CardDAV
GET/ics/:fileRead a calendar from its .ics link
ALL/.well-known/caldavCalDAV discovery
ALL/.well-known/carddavCardDAV discovery

#CalDAV/CardDAV capabilities

OPTIONS/dav/*
Address
https://<your-org>.brambleit.cloud/mail/dav/*
Requires
None: public, or protected by a token in the address or body.

Response

An empty body.

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/mail/dav/*', {
  method: 'OPTIONS',
  credentials: 'include',
});
const data = await res.json();

#CalDAV and CardDAV

ALL/dav/*

The standard WebDAV methods (PROPFIND, REPORT, GET, PUT, DELETE, MKCALENDAR…). Sign in with HTTP Basic: your email address and password or an app password.

Address
https://<your-org>.brambleit.cloud/mail/dav/*
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).

Response

An empty body.

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/mail/dav/*', {
  method: 'ALL',
  credentials: 'include',
});
const data = await res.json();

#Read a calendar from its .ics link

GET/ics/:file
Address
https://<your-org>.brambleit.cloud/mail/ics/:file
Requires
None: public, or protected by a token in the address or body.

Path parameters

NameTypeDescription
filerequiredstring

Response

A body.

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/mail/ics/string', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#CalDAV discovery

ALL/.well-known/caldav
Address
https://<your-org>.brambleit.cloud/mail/.well-known/caldav
Requires
None: public, or protected by a token in the address or body.

Response

A redirect.

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/mail/.well-known/caldav', {
  method: 'ALL',
  credentials: 'include',
});
const data = await res.json();

#CardDAV discovery

ALL/.well-known/carddav
Address
https://<your-org>.brambleit.cloud/mail/.well-known/carddav
Requires
None: public, or protected by a token in the address or body.

Response

A redirect.

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/mail/.well-known/carddav', {
  method: 'ALL',
  credentials: 'include',
});
const data = await res.json();