Raw Data and DTOs
Calendar objects and contacts keep the original iCalendar or vCard text as the canonical payload.
Typed DTOs provide a convenient projection over common fields:
Bambamboole\LaravelDav\Dto\CalendarObjectDataBambamboole\LaravelDav\Dto\ContactData
Parsed fields are nullable by design. If a source payload omits or malforms a value, the typed field is null while the raw payload remains intact.
Parse raw iCalendar directly:
use Bambamboole\LaravelDav\Parsing\CalendarObjectParser;
$data = app(CalendarObjectParser::class)->parse($rawICalendar);
$data->raw;$data->summary;$data->startsAt;$data->isAllDay;Read typed data from stored models:
$calendarData = $object->toData();$contactData = $card->toData();When application code writes resources, prefer the model mutation methods over manually filling payload columns:
$object = $calendar->putObject($calendarData);$card = $addressBook->putContact($contactData);Those methods keep raw payloads, ETags, sync tokens, and change records aligned with DAV endpoint writes.