Audience: Application developers
Editorial status: Published — Source Validated
Product: FeraCalendar
Classification: partner
REPORT /caldav/calendars/{calendarUuid}/
Overview
Authenticated CalDAV report implemented at src/caldav/router.js:36 (controller.report). The adapter parses calendar-query time ranges, multiget href UUIDs, or sync-collection intent and returns authorized events, ETags, and iCalendar in DAV multistatus XML.
Authentication and access
Security scheme: basicAuth
| Control | Contract |
|---|---|
| Authentication | authenticated |
| Authorization | HTTP Basic credentials are verified by FeraAuth and the resolved principal must have read capability for the selected calendar context. |
| Licensing | The adapter has no separate local product-license middleware; it relies on FeraAuth credential verification and FeraCal calendar-access resolution for the effective instance. |
| Instance Context | Principal and instance routes supply an instance UUID. Calendar routes first resolve the calendar UUID to its owner instance, then verify credentials in that effective context. |
| Ownership | The verified FeraAuth user is resolved to a FeraCal person and calendar role; collection and event access is constrained to calendars for which that principal has the required capability. |
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
calendarUuid |
path | string (uuid) | Yes | FeraCal calendarUuid UUID used for CalDAV discovery and authorization. |
Request body
CalDAV calendar-query, calendar-multiget, or sync-collection XML document.
application/xml
Schema: string
<?xml version="1.0"?><cal:calendar-query xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav"><d:prop><d:getetag/><cal:calendar-data/></d:prop><cal:filter><cal:comp-filter name="VCALENDAR"><cal:comp-filter name="VEVENT"><cal:time-range start="20260901T000000Z" end="20261001T000000Z"/></cal:comp-filter></cal:comp-filter></cal:filter></cal:calendar-query>
text/xml
Schema: string
<?xml version="1.0"?><cal:calendar-multiget xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav"><d:prop><d:getetag/><cal:calendar-data/></d:prop><d:href>/caldav/calendars/715c9ebb-0470-11f1-a928-0ed2cd1b87df/715c9ebb-0470-11f1-a928-0ed2cd1b87df.ics</d:href></cal:calendar-multiget>
Example request
cURL
curl --request REPORT \ \
--url 'https://caldav.feradel.com/caldav/calendars/715c9ebb-0470-11f1-a928-0ed2cd1b87df/' \
--user '$FERA_CALDAV_USERNAME:$FERA_CALDAV_PASSWORD' \
--header 'content-type: application/xml' \
--data '<?xml version="1.0"?><cal:calendar-query xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav"><d:prop><d:getetag/><cal:calendar-data/></d:prop><cal:filter><cal:comp-filter name="VCALENDAR"><cal:comp-filter name="VEVENT"><cal:time-range start="20260901T000000Z" end="20261001T000000Z"/></cal:comp-filter></cal:comp-filter></cal:filter></cal:calendar-query>'
Responses
207 DAV multistatus contains requested or range-matching VEVENT data, ETags, and an optional sync token.
| Header | Description |
|---|---|
DAV |
DAV compliance classes advertised by the adapter. |
MS-Author-Via |
DAV authoring capability marker. |
Allow |
Methods understood by the CalDAV adapter. |
Content type: application/xml; schema: string
<?xml version="1.0" encoding="utf-8"?><d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav"><d:response><d:href>/caldav/calendars/715c9ebb-0470-11f1-a928-0ed2cd1b87df/715c9ebb-0470-11f1-a928-0ed2cd1b87df.ics</d:href><d:propstat><d:prop><d:getetag>"event-etag"</d:getetag><cal:calendar-data>BEGIN:VCALENDAR...END:VCALENDAR</cal:calendar-data></d:prop></d:propstat></d:response></d:multistatus>
400 The REPORT XML is malformed or does not select a supported report.
Content type: application/json; schema: CalDavError
{
"success": false,
"error": {
"message": "Unsupported CalDAV report"
}
}
401 Basic credentials are missing or rejected.
Content type: application/json; schema: CalDavError
{
"success": false,
"error": {
"message": "CalDAV credentials are required"
}
}
403 The verified principal lacks calendar read access.
Content type: application/json; schema: CalDavError
{
"success": false,
"error": {
"message": "Calendar read access denied"
}
}
500 The calendar query dependency failed.
Content type: application/json; schema: CalDavError
{
"success": false,
"error": {
"message": "Internal server error"
}
}
Status and retry matrix
| Status | Condition | Retryable | Developer action |
|---|---|---|---|
207 |
DAV multistatus contains requested or range-matching VEVENT data, ETags, and an optional sync token. | No | Continue with the DAV, XML, iCalendar, ETag, or empty-body result described for this status. |
400 |
The REPORT XML is malformed or does not select a supported report. | No | Correct credentials, capability, resource name, XML/iCalendar content, UID, or ETag before retrying. |
401 |
Basic credentials are missing or rejected. | No | Correct credentials, capability, resource name, XML/iCalendar content, UID, or ETag before retrying. |
403 |
The verified principal lacks calendar read access. | No | Correct credentials, capability, resource name, XML/iCalendar content, UID, or ETag before retrying. |
500 |
The calendar query dependency failed. | Yes | Correct credentials, capability, resource name, XML/iCalendar content, UID, or ETag before retrying. |
Related operations and events
- Operation
caldav_report_22 - Operation
caldav_report_27
Source trace
Repository: feradelinc/feradel.calendar.caldav
Route: src/caldav/router.js
Handler: controller.report
Line: 36
Contract: OpenAPI 3.1, source-traced and publication-validated.