kCalDAV Database Schema

collection
A collection is a calendar directory. Collections, in kCalDAV, only contain resources: we do not allow nested collections. This just keeps things simpler.
colour
The colour (an Apple extension) for calendar showing.
ctag
The HTTP ctag of the collection.
description
A free-form description of the calendar.
displayname
The free-form name of the calendar.
flags
Currently unused.
id
principal
Who owns this collection?
url
The URL (path component), e.g., “foobar” of “foobar/foo.ics”.
database
We use this to determine first whether the database has been opened and created or not; second, to see whether the person accessing the database on the local system is allowed. Of course, root can override everything.
owneruid
Owner uid.
nonce
A nonce is used by the HTTP digest authentication. We limit the size of this table in the software, since it's basically touchable by the open Internet.
count
How many times the nonce has been used.
id
nonce
The value of the nonce.
principal
A principal is a user.
email
E-mail address.
flags
Currently unused.
hash
Password hash.
id
name
Free-form user name.
proxy
Proxies function as a delegation mechanism: the proxy.proxy user will have access to the collections and resources of proxy.principal.
bits
Mode bits PROXY_READ and PROXY_WRITE.
flags
Currently unused.
id
principal
The one whose stuff will be accessed by proxy.proxy.
proxy
The one accessing the stuff of proxy.principal.
resource
A resource is a “file” managed by the CalDAV server. For us, files are always iCal files.
collection
To which collection to be we belong?
data
The iCal data as a nil-terminated string.
etag
The file's current etag (in the HTTP sense).
flags
Currently unused.
id
url
The URL of the resource component, e.g., “foo.ics”.