{"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43446"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 43446\r\n\r\n\n\n\n \n \n Calendar\n \n\n\n\n
Calendar Fixture Public Calendar UI
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n \n \n \n
\n
\n ICS Link\n CalDAV\n
\n
\n \n
\n
\n
\n
\n
\n
\n

Account Login

\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n

Register

\n
\n
\n
\n
\n
\n
\n
\n

Password Recovery

\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n

Event Details

\n
\n
\n
\n
\n
\n
\n
\n
\n

Event

\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n

Delete Single Occurrence (Exception)

\n
\n \n \n
\n
\n \n
\n \n
\n
\n
\n
\n\n\n\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 6585\r\n\r\n{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"b2246c0ba36be704\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"97ffb830a549901c\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}, {\"id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"start_datetime\": \"2026-04-06T09:00:00+01:00\", \"end_datetime\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 10, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"0f947e3952fcf681\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}, {\"id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"start_datetime\": \"2026-04-08T12:30:00+01:00\", \"end_datetime\": \"2026-04-08T13:30:00+01:00\", \"repeat_type\": \"weekly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"4f06e2ef4d6d8e38\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}, {\"id\": 5, \"uid\": \"fixture-ce-005@calendar-wp-plugin\", \"title\": \"Finance Close\", \"description\": \"Month-end close process.\", \"location\": \"Finance Office\", \"category\": \"Finance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-30T17:00:00+01:00\", \"end_datetime\": \"2026-04-30T18:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-08-31\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"927953eb5c8dd26c\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}, {\"id\": 6, \"uid\": \"fixture-ce-006@calendar-wp-plugin\", \"title\": \"Annual Conference\", \"description\": \"Annual community conference.\", \"location\": \"Main Hall\", \"category\": \"Events\", \"all_day_event\": false, \"start_datetime\": \"2026-06-15T10:00:00+01:00\", \"end_datetime\": \"2026-06-15T17:00:00+01:00\", \"repeat_type\": \"yearly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"93cf1bad962c75f4\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}, {\"id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"start_datetime\": \"2026-04-07T15:00:00+01:00\", \"end_datetime\": \"2026-04-07T16:00:00+01:00\", \"repeat_type\": \"custom\", \"repeat_interval\": 2, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-07-31\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"7201c1345f1b2573\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}, {\"id\": 8, \"uid\": \"fixture-ce-008@calendar-wp-plugin\", \"title\": \"DST Validation Event\", \"description\": \"Validates DST transition rendering.\", \"location\": \"Lab\", \"category\": \"QA\", \"all_day_event\": false, \"start_datetime\": \"2026-10-25T00:30:00+01:00\", \"end_datetime\": \"2026-10-25T02:30:00+00:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a81452cded01c6a1\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}, {\"id\": 9, \"uid\": \"fixture-ce-009@calendar-wp-plugin\", \"title\": \"Leap Day Marker\", \"description\": \"Leap day recurrence behavior.\", \"location\": \"Calendar\", \"category\": \"QA\", \"all_day_event\": false, \"start_datetime\": \"2028-02-29T09:00:00+00:00\", \"end_datetime\": \"2028-02-29T10:00:00+00:00\", \"repeat_type\": \"yearly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"978f53232a5bb40f\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}, {\"id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"start_datetime\": \"2026-04-03T14:00:00+01:00\", \"end_datetime\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 8, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"aff80ba990836966\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:53+00:00\"}], \"meta\": {\"count\": 10}}", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"c070ea0768ce7e3b\"", "Content-Length": "3132"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"c070ea0768ce7e3b\"\r\nContent-Length: 3132\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-005@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Finance Close\r\nDESCRIPTION:Month-end close process.\r\nLOCATION:Finance Office\r\nCATEGORIES:Finance\r\nDTSTART;TZID=Europe/London:20260430T170000\r\nDTEND;TZID=Europe/London:20260430T180000\r\nRRULE:FREQ=MONTHLY;UNTIL=20260831T235959\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-006@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Annual Conference\r\nDESCRIPTION:Annual community conference.\r\nLOCATION:Main Hall\r\nCATEGORIES:Events\r\nDTSTART;TZID=Europe/London:20260615T100000\r\nDTEND;TZID=Europe/London:20260615T170000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-007@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Fortnightly Coaching\r\nDESCRIPTION:Coaching check-in.\r\nLOCATION:Online\r\nCATEGORIES:Training\r\nDTSTART;TZID=Europe/London:20260407T150000\r\nDTEND;TZID=Europe/London:20260407T160000\r\nRRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20260731T235959\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-008@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:DST Validation Event\r\nDESCRIPTION:Validates DST transition rendering.\r\nLOCATION:Lab\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20261025T003000\r\nDTEND;TZID=Europe/London:20261025T023000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-009@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Leap Day Marker\r\nDESCRIPTION:Leap day recurrence behavior.\r\nLOCATION:Calendar\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20280229T090000\r\nDTEND;TZID=Europe/London:20280229T100000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"b2246c0ba36be704\"", "Content-Length": "364"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"b2246c0ba36be704\"\r\nContent-Length: 364\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT"}, "body": "HTTP/1.0 204 No Content\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "ETag": "\"864b421e254e30ac\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nETag: \"864b421e254e30ac\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"864b421e254e30ac\"", "Content-Length": "288"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"864b421e254e30ac\"\r\nContent-Length: 288\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "ETag": "\"44d2d2c64b2e5412\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nETag: \"44d2d2c64b2e5412\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"44d2d2c64b2e5412\"", "Content-Length": "319"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"44d2d2c64b2e5412\"\r\nContent-Length: 319\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "ETag": "\"fa7dfc8cbf381fc0\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nETag: \"fa7dfc8cbf381fc0\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"fa7dfc8cbf381fc0\"", "Content-Length": "327"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"fa7dfc8cbf381fc0\"\r\nContent-Length: 327\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "ETag": "\"3f65af9c5527a154\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nETag: \"3f65af9c5527a154\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3f65af9c5527a154\"", "Content-Length": "322"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"3f65af9c5527a154\"\r\nContent-Length: 322\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 673\r\n\r\n{\"data\": {\"id\": 15, \"uid\": \"98fd8f149a14e2dddeb7@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"530723cfffec98c3\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:54+00:00\"}}", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/15/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT"}, "body": "HTTP/1.0 204 No Content\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/15.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"006c790da9929803\"", "Content-Length": "420"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"006c790da9929803\"\r\nContent-Length: 420\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:98fd8f149a14e2dddeb7@calendar-wp-plugin\r\nDTSTAMP:20260330T140854Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 655\r\n\r\n{\"data\": {\"id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"5eeeb56da7d6ae79\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:08:54+00:00\"}}", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT"}, "body": "HTTP/1.0 204 No Content\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 5212\r\n\r\n{\"data\": [{\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-06T10:00:00+00:00\", \"occurrence_end\": \"2026-03-06T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-07T10:00:00+00:00\", \"occurrence_end\": \"2026-03-07T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-08T10:00:00+00:00\", \"occurrence_end\": \"2026-03-08T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-09T10:00:00+00:00\", \"occurrence_end\": \"2026-03-09T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-10T10:00:00+00:00\", \"occurrence_end\": \"2026-03-10T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-12T10:00:00+00:00\", \"occurrence_end\": \"2026-03-12T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-13T10:00:00+00:00\", \"occurrence_end\": \"2026-03-13T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-14T10:00:00+00:00\", \"occurrence_end\": \"2026-03-14T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-15T10:00:00+00:00\", \"occurrence_end\": \"2026-03-15T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-16T10:00:00+00:00\", \"occurrence_end\": \"2026-03-16T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-17T10:00:00+00:00\", \"occurrence_end\": \"2026-03-17T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-18T10:00:00+00:00\", \"occurrence_end\": \"2026-03-18T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-19T10:00:00+00:00\", \"occurrence_end\": \"2026-03-19T11:00:00+00:00\", \"repeat_type\": \"daily\"}]}", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT"}, "body": "HTTP/1.0 204 No Content\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 4906\r\n\r\n{\"data\": [{\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-06T10:00:00+00:00\", \"occurrence_end\": \"2026-03-06T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-07T10:00:00+00:00\", \"occurrence_end\": \"2026-03-07T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-08T10:00:00+00:00\", \"occurrence_end\": \"2026-03-08T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-09T10:00:00+00:00\", \"occurrence_end\": \"2026-03-09T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-12T10:00:00+00:00\", \"occurrence_end\": \"2026-03-12T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-13T10:00:00+00:00\", \"occurrence_end\": \"2026-03-13T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-14T10:00:00+00:00\", \"occurrence_end\": \"2026-03-14T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-15T10:00:00+00:00\", \"occurrence_end\": \"2026-03-15T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-16T10:00:00+00:00\", \"occurrence_end\": \"2026-03-16T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-17T10:00:00+00:00\", \"occurrence_end\": \"2026-03-17T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-18T10:00:00+00:00\", \"occurrence_end\": \"2026-03-18T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ddec804fa982f5df9ed5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-19T10:00:00+00:00\", \"occurrence_end\": \"2026-03-19T11:00:00+00:00\", \"repeat_type\": \"daily\"}]}", "body_truncated": false}} {"ts": "2026-03-30T14:08:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:08:54 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43446"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:08:54 GMT\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 43446\r\n\r\n\n\n\n \n \n Calendar\n \n\n\n\n
Calendar Fixture Public Calendar UI
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n \n \n \n
\n
\n ICS Link\n CalDAV\n
\n
\n \n
\n
\n
\n
\n
\n
\n

Account Login

\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n

Register

\n
\n
\n
\n
\n
\n
\n
\n

Password Recovery

\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n

Event Details

\n
\n
\n
\n
\n
\n
\n
\n
\n

Event

\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n

Delete Single Occurrence (Exception)

\n
\n \n \n
\n
\n \n
\n \n
\n
\n
\n
\n\n\n\n", "body_truncated": false}} {"ts": "2026-03-30T14:09:43+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14085", "If-Match": "\"b448b4adc3c325bc\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19190330T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19201025T030000\r\nRDATE:19201025T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19210403T020000\r\nRDATE:19210403T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19211003T030000\r\nRDATE:19211003T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19220326T020000\r\nRDATE:19220326T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19221008T030000\r\nRDATE:19221008T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19230422T020000\r\nRDATE:19230422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19240413T020000\r\nRDATE:19240413T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19230916T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19250419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19270410T020000\r\nRDATE:19270410T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19280422T020000\r\nRDATE:19280422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19290421T020000\r\nRDATE:19290421T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19300413T020000\r\nRDATE:19300413T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19310419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19251004T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19330409T020000\r\nRDATE:19330409T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19331008T030000\r\nRDATE:19331008T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19340422T020000\r\nRDATE:19340422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19350414T020000\r\nRDATE:19350414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19360419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19380410T020000\r\nRDATE:19380410T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19341007T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19390416T020000\r\nRDATE:19390416T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19400225T020000\r\nRDATE:19400225T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19410504T020000\r\nRDATE:19410504T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19410810T030000\r\nRDATE:19410810T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19420405T020000\r\nRDATE:19420405T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19420809T030000\r\nRDATE:19420809T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19430404T020000\r\nRDATE:19430404T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19430815T030000\r\nRDATE:19430815T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19440402T020000\r\nRDATE:19440402T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19440917T030000\r\nRDATE:19440917T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19450402T020000\r\nRDATE:19450402T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19391119T030000\r\nRDATE:19391119T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19450715T030000\r\nRDATE:19450715T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19460414T020000\r\nRDATE:19460414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470316T020000\r\nRDATE:19470316T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470413T020000\r\nRDATE:19470413T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19451007T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470810T030000\r\nRDATE:19470810T030000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19471102T030000\r\nRDATE:19471102T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19480314T020000\r\nRDATE:19480314T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19490403T020000\r\nRDATE:19490403T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19481031T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19501022T030000\r\nRDATE:19501022T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19511021T030000\r\nRDATE:19511021T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19521026T030000\r\nRDATE:19521026T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19500416T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19540411T020000\r\nRDATE:19540411T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19550417T020000\r\nRDATE:19550417T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19560422T020000\r\nRDATE:19560422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19570414T020000\r\nRDATE:19570414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19580420T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19600410T020000\r\nRDATE:19600410T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19531004T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19610326T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19640322T020000\r\nRDATE:19640322T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19611029T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19651024T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19650321T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19671029T030000\r\nRDATE:19671029T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19681027T000000\r\nRDATE:19681027T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19680218T020000\r\nRDATE:19680218T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19711031T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19761024T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19720319T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19781029T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19811025T020000\r\nRDATE:19811025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19821024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19841028T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19881023T020000\r\nRDATE:19881023T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19891029T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19931024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19810329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19961027T020000\r\nRDATE:19961027T020000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:(DST)\r\nDTSTART:19970330T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:(STD)\r\nDTSTART:19971026T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nLAST-MODIFIED:20260330T140943Z\r\nDTSTAMP:20260330T140943Z\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nSUMMARY:test 8\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T160000\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nDESCRIPTION:Default Mozilla Description\r\nSEQUENCE:1\r\nX-MOZ-GENERATION:1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:09:43 GMT", "ETag": "\"075d4a0c8d56a83e\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:09:43 GMT\r\nETag: \"075d4a0c8d56a83e\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:09:43+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:09:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "14799"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:09:43 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 14799\r\n\r\n\n\n\n /caldav/calendars/public/1.ics\n \n \n \"b2246c0ba36be704\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"97ffb830a549901c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/3.ics\n \n \n \"0f947e3952fcf681\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/4.ics\n \n \n \"4f06e2ef4d6d8e38\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/5.ics\n \n \n \"927953eb5c8dd26c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-005@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Finance Close\r\nDESCRIPTION:Month-end close process.\r\nLOCATION:Finance Office\r\nCATEGORIES:Finance\r\nDTSTART;TZID=Europe/London:20260430T170000\r\nDTEND;TZID=Europe/London:20260430T180000\r\nRRULE:FREQ=MONTHLY;UNTIL=20260831T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/6.ics\n \n \n \"93cf1bad962c75f4\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-006@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Annual Conference\r\nDESCRIPTION:Annual community conference.\r\nLOCATION:Main Hall\r\nCATEGORIES:Events\r\nDTSTART;TZID=Europe/London:20260615T100000\r\nDTEND;TZID=Europe/London:20260615T170000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/7.ics\n \n \n \"7201c1345f1b2573\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-007@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Fortnightly Coaching\r\nDESCRIPTION:Coaching check-in.\r\nLOCATION:Online\r\nCATEGORIES:Training\r\nDTSTART;TZID=Europe/London:20260407T150000\r\nDTEND;TZID=Europe/London:20260407T160000\r\nRRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20260731T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/8.ics\n \n \n \"a81452cded01c6a1\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-008@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:DST Validation Event\r\nDESCRIPTION:Validates DST transition rendering.\r\nLOCATION:Lab\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20261025T003000\r\nDTEND;TZID=Europe/London:20261025T023000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/9.ics\n \n \n \"978f53232a5bb40f\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-009@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Leap Day Marker\r\nDESCRIPTION:Leap day recurrence behavior.\r\nLOCATION:Calendar\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20280229T090000\r\nDTEND;TZID=Europe/London:20280229T100000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/10.ics\n \n \n \"b7eba5ab03b7f422\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEXDATE;TZID=Europe/London:20260417T140000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n \"864b421e254e30ac\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n \"44d2d2c64b2e5412\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n \"fa7dfc8cbf381fc0\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n \"3f65af9c5527a154\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/15.ics\n \n \n \"006c790da9929803\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:98fd8f149a14e2dddeb7@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/16.ics\n \n \n \"9d5b8db2124188a7\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:ddec804fa982f5df9ed5@calendar-wp-plugin\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:Smoke Daily Exception TZ\r\nDESCRIPTION:tz-key\r\nDTSTART;TZID=Europe/London:20260302T100000\r\nDTEND;TZID=Europe/London:20260302T110000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n \"075d4a0c8d56a83e\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nDTSTAMP:20260330T140943Z\r\nSUMMARY:test 8\r\nDESCRIPTION:Default Mozilla Description\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_truncated": false}} {"ts": "2026-03-30T14:09:49+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:09:49 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5816"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:09:49 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 5816\r\n\r\n\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"b2246c0ba36be704\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"97ffb830a549901c\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n text/calendar; charset=utf-8\"0f947e3952fcf681\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/4.ics\n \n \n text/calendar; charset=utf-8\"4f06e2ef4d6d8e38\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/5.ics\n \n \n text/calendar; charset=utf-8\"927953eb5c8dd26c\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/6.ics\n \n \n text/calendar; charset=utf-8\"93cf1bad962c75f4\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/7.ics\n \n \n text/calendar; charset=utf-8\"7201c1345f1b2573\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/8.ics\n \n \n text/calendar; charset=utf-8\"a81452cded01c6a1\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/9.ics\n \n \n text/calendar; charset=utf-8\"978f53232a5bb40f\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/10.ics\n \n \n text/calendar; charset=utf-8\"b7eba5ab03b7f422\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n text/calendar; charset=utf-8\"864b421e254e30ac\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n text/calendar; charset=utf-8\"44d2d2c64b2e5412\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n text/calendar; charset=utf-8\"fa7dfc8cbf381fc0\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n text/calendar; charset=utf-8\"3f65af9c5527a154\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/15.ics\n \n \n text/calendar; charset=utf-8\"006c790da9929803\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/16.ics\n \n \n text/calendar; charset=utf-8\"9d5b8db2124188a7\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n text/calendar; charset=utf-8\"075d4a0c8d56a83e\"\n \n HTTP/1.1 200 OK\n \n\n\n", "body_truncated": false}} {"ts": "2026-03-30T14:09:49+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "232", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/15.ics", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:09:49 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "14799"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:09:49 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 14799\r\n\r\n\n\n\n /caldav/calendars/public/1.ics\n \n \n \"b2246c0ba36be704\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"97ffb830a549901c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/3.ics\n \n \n \"0f947e3952fcf681\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/4.ics\n \n \n \"4f06e2ef4d6d8e38\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/5.ics\n \n \n \"927953eb5c8dd26c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-005@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Finance Close\r\nDESCRIPTION:Month-end close process.\r\nLOCATION:Finance Office\r\nCATEGORIES:Finance\r\nDTSTART;TZID=Europe/London:20260430T170000\r\nDTEND;TZID=Europe/London:20260430T180000\r\nRRULE:FREQ=MONTHLY;UNTIL=20260831T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/6.ics\n \n \n \"93cf1bad962c75f4\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-006@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Annual Conference\r\nDESCRIPTION:Annual community conference.\r\nLOCATION:Main Hall\r\nCATEGORIES:Events\r\nDTSTART;TZID=Europe/London:20260615T100000\r\nDTEND;TZID=Europe/London:20260615T170000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/7.ics\n \n \n \"7201c1345f1b2573\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-007@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Fortnightly Coaching\r\nDESCRIPTION:Coaching check-in.\r\nLOCATION:Online\r\nCATEGORIES:Training\r\nDTSTART;TZID=Europe/London:20260407T150000\r\nDTEND;TZID=Europe/London:20260407T160000\r\nRRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20260731T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/8.ics\n \n \n \"a81452cded01c6a1\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-008@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:DST Validation Event\r\nDESCRIPTION:Validates DST transition rendering.\r\nLOCATION:Lab\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20261025T003000\r\nDTEND;TZID=Europe/London:20261025T023000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/9.ics\n \n \n \"978f53232a5bb40f\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-009@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Leap Day Marker\r\nDESCRIPTION:Leap day recurrence behavior.\r\nLOCATION:Calendar\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20280229T090000\r\nDTEND;TZID=Europe/London:20280229T100000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/10.ics\n \n \n \"b7eba5ab03b7f422\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEXDATE;TZID=Europe/London:20260417T140000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n \"864b421e254e30ac\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n \"44d2d2c64b2e5412\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n \"fa7dfc8cbf381fc0\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n \"3f65af9c5527a154\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/15.ics\n \n \n \"006c790da9929803\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:98fd8f149a14e2dddeb7@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/16.ics\n \n \n \"9d5b8db2124188a7\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:ddec804fa982f5df9ed5@calendar-wp-plugin\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:Smoke Daily Exception TZ\r\nDESCRIPTION:tz-key\r\nDTSTART;TZID=Europe/London:20260302T100000\r\nDTEND;TZID=Europe/London:20260302T110000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n \"075d4a0c8d56a83e\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nDTSTAMP:20260330T140949Z\r\nSUMMARY:test 8\r\nDESCRIPTION:Default Mozilla Description\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_truncated": false}} {"ts": "2026-03-30T14:12:40+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14085", "If-Match": "\"075d4a0c8d56a83e\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19190330T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19201025T030000\r\nRDATE:19201025T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19210403T020000\r\nRDATE:19210403T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19211003T030000\r\nRDATE:19211003T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19220326T020000\r\nRDATE:19220326T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19221008T030000\r\nRDATE:19221008T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19230422T020000\r\nRDATE:19230422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19240413T020000\r\nRDATE:19240413T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19230916T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19250419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19270410T020000\r\nRDATE:19270410T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19280422T020000\r\nRDATE:19280422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19290421T020000\r\nRDATE:19290421T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19300413T020000\r\nRDATE:19300413T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19310419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19251004T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19330409T020000\r\nRDATE:19330409T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19331008T030000\r\nRDATE:19331008T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19340422T020000\r\nRDATE:19340422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19350414T020000\r\nRDATE:19350414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19360419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19380410T020000\r\nRDATE:19380410T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19341007T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19390416T020000\r\nRDATE:19390416T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19400225T020000\r\nRDATE:19400225T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19410504T020000\r\nRDATE:19410504T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19410810T030000\r\nRDATE:19410810T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19420405T020000\r\nRDATE:19420405T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19420809T030000\r\nRDATE:19420809T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19430404T020000\r\nRDATE:19430404T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19430815T030000\r\nRDATE:19430815T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19440402T020000\r\nRDATE:19440402T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19440917T030000\r\nRDATE:19440917T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19450402T020000\r\nRDATE:19450402T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19391119T030000\r\nRDATE:19391119T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19450715T030000\r\nRDATE:19450715T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19460414T020000\r\nRDATE:19460414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470316T020000\r\nRDATE:19470316T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470413T020000\r\nRDATE:19470413T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19451007T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470810T030000\r\nRDATE:19470810T030000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19471102T030000\r\nRDATE:19471102T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19480314T020000\r\nRDATE:19480314T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19490403T020000\r\nRDATE:19490403T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19481031T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19501022T030000\r\nRDATE:19501022T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19511021T030000\r\nRDATE:19511021T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19521026T030000\r\nRDATE:19521026T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19500416T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19540411T020000\r\nRDATE:19540411T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19550417T020000\r\nRDATE:19550417T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19560422T020000\r\nRDATE:19560422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19570414T020000\r\nRDATE:19570414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19580420T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19600410T020000\r\nRDATE:19600410T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19531004T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19610326T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19640322T020000\r\nRDATE:19640322T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19611029T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19651024T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19650321T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19671029T030000\r\nRDATE:19671029T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19681027T000000\r\nRDATE:19681027T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19680218T020000\r\nRDATE:19680218T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19711031T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19761024T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19720319T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19781029T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19811025T020000\r\nRDATE:19811025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19821024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19841028T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19881023T020000\r\nRDATE:19881023T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19891029T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19931024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19810329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19961027T020000\r\nRDATE:19961027T020000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:(DST)\r\nDTSTART:19970330T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:(STD)\r\nDTSTART:19971026T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nLAST-MODIFIED:20260330T141240Z\r\nDTSTAMP:20260330T141240Z\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nSUMMARY:test 8\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260312T160000\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nDESCRIPTION:Default Mozilla Description\r\nSEQUENCE:1\r\nX-MOZ-GENERATION:1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:12:40 GMT", "ETag": "\"4b22d7e9f955d2a5\""}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:12:40 GMT\r\nETag: \"4b22d7e9f955d2a5\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:12:40+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:12:40 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "14799"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:12:40 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 14799\r\n\r\n\n\n\n /caldav/calendars/public/1.ics\n \n \n \"b2246c0ba36be704\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"97ffb830a549901c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/3.ics\n \n \n \"0f947e3952fcf681\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/4.ics\n \n \n \"4f06e2ef4d6d8e38\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/5.ics\n \n \n \"927953eb5c8dd26c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-005@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Finance Close\r\nDESCRIPTION:Month-end close process.\r\nLOCATION:Finance Office\r\nCATEGORIES:Finance\r\nDTSTART;TZID=Europe/London:20260430T170000\r\nDTEND;TZID=Europe/London:20260430T180000\r\nRRULE:FREQ=MONTHLY;UNTIL=20260831T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/6.ics\n \n \n \"93cf1bad962c75f4\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-006@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Annual Conference\r\nDESCRIPTION:Annual community conference.\r\nLOCATION:Main Hall\r\nCATEGORIES:Events\r\nDTSTART;TZID=Europe/London:20260615T100000\r\nDTEND;TZID=Europe/London:20260615T170000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/7.ics\n \n \n \"7201c1345f1b2573\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-007@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Fortnightly Coaching\r\nDESCRIPTION:Coaching check-in.\r\nLOCATION:Online\r\nCATEGORIES:Training\r\nDTSTART;TZID=Europe/London:20260407T150000\r\nDTEND;TZID=Europe/London:20260407T160000\r\nRRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20260731T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/8.ics\n \n \n \"a81452cded01c6a1\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-008@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:DST Validation Event\r\nDESCRIPTION:Validates DST transition rendering.\r\nLOCATION:Lab\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20261025T003000\r\nDTEND;TZID=Europe/London:20261025T023000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/9.ics\n \n \n \"978f53232a5bb40f\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-009@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Leap Day Marker\r\nDESCRIPTION:Leap day recurrence behavior.\r\nLOCATION:Calendar\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20280229T090000\r\nDTEND;TZID=Europe/London:20280229T100000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/10.ics\n \n \n \"b7eba5ab03b7f422\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEXDATE;TZID=Europe/London:20260417T140000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n \"864b421e254e30ac\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n \"44d2d2c64b2e5412\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n \"fa7dfc8cbf381fc0\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n \"3f65af9c5527a154\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/15.ics\n \n \n \"006c790da9929803\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:98fd8f149a14e2dddeb7@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/16.ics\n \n \n \"9d5b8db2124188a7\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:ddec804fa982f5df9ed5@calendar-wp-plugin\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:Smoke Daily Exception TZ\r\nDESCRIPTION:tz-key\r\nDTSTART;TZID=Europe/London:20260302T100000\r\nDTEND;TZID=Europe/London:20260302T110000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n \"4b22d7e9f955d2a5\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nDTSTAMP:20260330T141240Z\r\nSUMMARY:test 8\r\nDESCRIPTION:Default Mozilla Description\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_truncated": false}} {"ts": "2026-03-30T14:12:45+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:12:45 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5816"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:12:45 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 5816\r\n\r\n\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"b2246c0ba36be704\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"97ffb830a549901c\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n text/calendar; charset=utf-8\"0f947e3952fcf681\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/4.ics\n \n \n text/calendar; charset=utf-8\"4f06e2ef4d6d8e38\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/5.ics\n \n \n text/calendar; charset=utf-8\"927953eb5c8dd26c\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/6.ics\n \n \n text/calendar; charset=utf-8\"93cf1bad962c75f4\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/7.ics\n \n \n text/calendar; charset=utf-8\"7201c1345f1b2573\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/8.ics\n \n \n text/calendar; charset=utf-8\"a81452cded01c6a1\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/9.ics\n \n \n text/calendar; charset=utf-8\"978f53232a5bb40f\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/10.ics\n \n \n text/calendar; charset=utf-8\"b7eba5ab03b7f422\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n text/calendar; charset=utf-8\"864b421e254e30ac\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n text/calendar; charset=utf-8\"44d2d2c64b2e5412\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n text/calendar; charset=utf-8\"fa7dfc8cbf381fc0\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n text/calendar; charset=utf-8\"3f65af9c5527a154\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/15.ics\n \n \n text/calendar; charset=utf-8\"006c790da9929803\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/16.ics\n \n \n text/calendar; charset=utf-8\"9d5b8db2124188a7\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n text/calendar; charset=utf-8\"4b22d7e9f955d2a5\"\n \n HTTP/1.1 200 OK\n \n\n\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43446"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 43446\r\n\r\n\n\n\n \n \n Calendar\n \n\n\n\n
Calendar Fixture Public Calendar UI
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n \n \n \n
\n
\n ICS Link\n CalDAV\n
\n
\n \n
\n
\n
\n
\n
\n
\n

Account Login

\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n

Register

\n
\n
\n
\n
\n
\n
\n
\n

Password Recovery

\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n

Event Details

\n
\n
\n
\n
\n
\n
\n
\n
\n

Event

\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n

Delete Single Occurrence (Exception)

\n
\n \n \n
\n
\n \n
\n \n
\n
\n
\n
\n\n\n\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 6585\r\n\r\n{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"9e61840edd26b59c\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"6f79e4a470012e8c\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"start_datetime\": \"2026-04-06T09:00:00+01:00\", \"end_datetime\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 10, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"7dd021ab4c51e62e\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"start_datetime\": \"2026-04-08T12:30:00+01:00\", \"end_datetime\": \"2026-04-08T13:30:00+01:00\", \"repeat_type\": \"weekly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"382b171c7e467f49\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 5, \"uid\": \"fixture-ce-005@calendar-wp-plugin\", \"title\": \"Finance Close\", \"description\": \"Month-end close process.\", \"location\": \"Finance Office\", \"category\": \"Finance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-30T17:00:00+01:00\", \"end_datetime\": \"2026-04-30T18:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-08-31\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"6a0b1853010a3060\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 6, \"uid\": \"fixture-ce-006@calendar-wp-plugin\", \"title\": \"Annual Conference\", \"description\": \"Annual community conference.\", \"location\": \"Main Hall\", \"category\": \"Events\", \"all_day_event\": false, \"start_datetime\": \"2026-06-15T10:00:00+01:00\", \"end_datetime\": \"2026-06-15T17:00:00+01:00\", \"repeat_type\": \"yearly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"0344b53653b1897e\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"start_datetime\": \"2026-04-07T15:00:00+01:00\", \"end_datetime\": \"2026-04-07T16:00:00+01:00\", \"repeat_type\": \"custom\", \"repeat_interval\": 2, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-07-31\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"f3727cb12d14614a\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 8, \"uid\": \"fixture-ce-008@calendar-wp-plugin\", \"title\": \"DST Validation Event\", \"description\": \"Validates DST transition rendering.\", \"location\": \"Lab\", \"category\": \"QA\", \"all_day_event\": false, \"start_datetime\": \"2026-10-25T00:30:00+01:00\", \"end_datetime\": \"2026-10-25T02:30:00+00:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"2200904959f9c5cd\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 9, \"uid\": \"fixture-ce-009@calendar-wp-plugin\", \"title\": \"Leap Day Marker\", \"description\": \"Leap day recurrence behavior.\", \"location\": \"Calendar\", \"category\": \"QA\", \"all_day_event\": false, \"start_datetime\": \"2028-02-29T09:00:00+00:00\", \"end_datetime\": \"2028-02-29T10:00:00+00:00\", \"repeat_type\": \"yearly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"028aa2cacadd930b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"start_datetime\": \"2026-04-03T14:00:00+01:00\", \"end_datetime\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 8, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"47a32ea36bccb6cf\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}], \"meta\": {\"count\": 10}}", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"b626877cd3d20036\"", "Content-Length": "3132"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"b626877cd3d20036\"\r\nContent-Length: 3132\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-005@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Finance Close\r\nDESCRIPTION:Month-end close process.\r\nLOCATION:Finance Office\r\nCATEGORIES:Finance\r\nDTSTART;TZID=Europe/London:20260430T170000\r\nDTEND;TZID=Europe/London:20260430T180000\r\nRRULE:FREQ=MONTHLY;UNTIL=20260831T235959\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-006@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Annual Conference\r\nDESCRIPTION:Annual community conference.\r\nLOCATION:Main Hall\r\nCATEGORIES:Events\r\nDTSTART;TZID=Europe/London:20260615T100000\r\nDTEND;TZID=Europe/London:20260615T170000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-007@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Fortnightly Coaching\r\nDESCRIPTION:Coaching check-in.\r\nLOCATION:Online\r\nCATEGORIES:Training\r\nDTSTART;TZID=Europe/London:20260407T150000\r\nDTEND;TZID=Europe/London:20260407T160000\r\nRRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20260731T235959\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-008@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:DST Validation Event\r\nDESCRIPTION:Validates DST transition rendering.\r\nLOCATION:Lab\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20261025T003000\r\nDTEND;TZID=Europe/London:20261025T023000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-009@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Leap Day Marker\r\nDESCRIPTION:Leap day recurrence behavior.\r\nLOCATION:Calendar\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20280229T090000\r\nDTEND;TZID=Europe/London:20280229T100000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"9e61840edd26b59c\"", "Content-Length": "364"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"9e61840edd26b59c\"\r\nContent-Length: 364\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT"}, "body": "HTTP/1.0 204 No Content\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "ETag": "\"e5984c98962fda96\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nETag: \"e5984c98962fda96\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e5984c98962fda96\"", "Content-Length": "288"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"e5984c98962fda96\"\r\nContent-Length: 288\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "ETag": "\"a4f11de675293164\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nETag: \"a4f11de675293164\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"a4f11de675293164\"", "Content-Length": "319"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"a4f11de675293164\"\r\nContent-Length: 319\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "ETag": "\"db9706d0865b79d9\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nETag: \"db9706d0865b79d9\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"db9706d0865b79d9\"", "Content-Length": "327"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"db9706d0865b79d9\"\r\nContent-Length: 327\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "ETag": "\"9b7f63d5c08cc7c8\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nETag: \"9b7f63d5c08cc7c8\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"9b7f63d5c08cc7c8\"", "Content-Length": "322"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"9b7f63d5c08cc7c8\"\r\nContent-Length: 322\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 673\r\n\r\n{\"data\": {\"id\": 15, \"uid\": \"4e9ee4c86911a55106b9@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"0323ee6baedfc4b5\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}}", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/15/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT"}, "body": "HTTP/1.0 204 No Content\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/15.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e6f09ba57238f931\"", "Content-Length": "420"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: text/calendar; charset=utf-8\r\nETag: \"e6f09ba57238f931\"\r\nContent-Length: 420\r\n\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:4e9ee4c86911a55106b9@calendar-wp-plugin\r\nDTSTAMP:20260330T141436Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 655\r\n\r\n{\"data\": {\"id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"bbc40060424cca3d\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}}", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT"}, "body": "HTTP/1.0 204 No Content\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 5212\r\n\r\n{\"data\": [{\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-06T10:00:00+00:00\", \"occurrence_end\": \"2026-03-06T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-07T10:00:00+00:00\", \"occurrence_end\": \"2026-03-07T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-08T10:00:00+00:00\", \"occurrence_end\": \"2026-03-08T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-09T10:00:00+00:00\", \"occurrence_end\": \"2026-03-09T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-10T10:00:00+00:00\", \"occurrence_end\": \"2026-03-10T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-12T10:00:00+00:00\", \"occurrence_end\": \"2026-03-12T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-13T10:00:00+00:00\", \"occurrence_end\": \"2026-03-13T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-14T10:00:00+00:00\", \"occurrence_end\": \"2026-03-14T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-15T10:00:00+00:00\", \"occurrence_end\": \"2026-03-15T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-16T10:00:00+00:00\", \"occurrence_end\": \"2026-03-16T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-17T10:00:00+00:00\", \"occurrence_end\": \"2026-03-17T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-18T10:00:00+00:00\", \"occurrence_end\": \"2026-03-18T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-19T10:00:00+00:00\", \"occurrence_end\": \"2026-03-19T11:00:00+00:00\", \"repeat_type\": \"daily\"}]}", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT"}, "body": "HTTP/1.0 204 No Content\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:36 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 4906\r\n\r\n{\"data\": [{\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-06T10:00:00+00:00\", \"occurrence_end\": \"2026-03-06T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-07T10:00:00+00:00\", \"occurrence_end\": \"2026-03-07T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-08T10:00:00+00:00\", \"occurrence_end\": \"2026-03-08T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-09T10:00:00+00:00\", \"occurrence_end\": \"2026-03-09T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-12T10:00:00+00:00\", \"occurrence_end\": \"2026-03-12T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-13T10:00:00+00:00\", \"occurrence_end\": \"2026-03-13T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-14T10:00:00+00:00\", \"occurrence_end\": \"2026-03-14T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-15T10:00:00+00:00\", \"occurrence_end\": \"2026-03-15T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-16T10:00:00+00:00\", \"occurrence_end\": \"2026-03-16T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-17T10:00:00+00:00\", \"occurrence_end\": \"2026-03-17T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-18T10:00:00+00:00\", \"occurrence_end\": \"2026-03-18T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-19T10:00:00+00:00\", \"occurrence_end\": \"2026-03-19T11:00:00+00:00\", \"repeat_type\": \"daily\"}]}", "body_truncated": false}} {"ts": "2026-03-30T14:14:37+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:18080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:37 GMT", "ETag": "\"1c3e46425e90df29\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:37 GMT\r\nETag: \"1c3e46425e90df29\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:14:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11006"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:37 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 11006\r\n\r\n{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"9e61840edd26b59c\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"6f79e4a470012e8c\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"start_datetime\": \"2026-04-06T09:00:00+01:00\", \"end_datetime\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 10, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"7dd021ab4c51e62e\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"start_datetime\": \"2026-04-08T12:30:00+01:00\", \"end_datetime\": \"2026-04-08T13:30:00+01:00\", \"repeat_type\": \"weekly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"382b171c7e467f49\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 5, \"uid\": \"fixture-ce-005@calendar-wp-plugin\", \"title\": \"Finance Close\", \"description\": \"Month-end close process.\", \"location\": \"Finance Office\", \"category\": \"Finance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-30T17:00:00+01:00\", \"end_datetime\": \"2026-04-30T18:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-08-31\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"6a0b1853010a3060\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 6, \"uid\": \"fixture-ce-006@calendar-wp-plugin\", \"title\": \"Annual Conference\", \"description\": \"Annual community conference.\", \"location\": \"Main Hall\", \"category\": \"Events\", \"all_day_event\": false, \"start_datetime\": \"2026-06-15T10:00:00+01:00\", \"end_datetime\": \"2026-06-15T17:00:00+01:00\", \"repeat_type\": \"yearly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"0344b53653b1897e\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"start_datetime\": \"2026-04-07T15:00:00+01:00\", \"end_datetime\": \"2026-04-07T16:00:00+01:00\", \"repeat_type\": \"custom\", \"repeat_interval\": 2, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-07-31\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"f3727cb12d14614a\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 8, \"uid\": \"fixture-ce-008@calendar-wp-plugin\", \"title\": \"DST Validation Event\", \"description\": \"Validates DST transition rendering.\", \"location\": \"Lab\", \"category\": \"QA\", \"all_day_event\": false, \"start_datetime\": \"2026-10-25T00:30:00+01:00\", \"end_datetime\": \"2026-10-25T02:30:00+00:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"2200904959f9c5cd\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 9, \"uid\": \"fixture-ce-009@calendar-wp-plugin\", \"title\": \"Leap Day Marker\", \"description\": \"Leap day recurrence behavior.\", \"location\": \"Calendar\", \"category\": \"QA\", \"all_day_event\": false, \"start_datetime\": \"2028-02-29T09:00:00+00:00\", \"end_datetime\": \"2028-02-29T10:00:00+00:00\", \"repeat_type\": \"yearly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"028aa2cacadd930b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"start_datetime\": \"2026-04-03T14:00:00+01:00\", \"end_datetime\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 8, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"1062edf9fc69e84f\\\"\", \"sync_version\": 2, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 11, \"uid\": \"smoke-vtimezone-parser-001\", \"title\": \"Smoke VTIMEZONE Parse\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-23T15:00:00+01:00\", \"end_datetime\": \"2026-04-23T16:00:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"e5984c98962fda96\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 12, \"uid\": \"smoke-monthly-nth-001\", \"title\": \"Smoke Monthly Nth\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-26T15:00:00+01:00\", \"end_datetime\": \"2026-04-26T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a4f11de675293164\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 13, \"uid\": \"smoke-monthly-ordinal-001\", \"title\": \"Smoke Monthly Ordinal\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-11T15:00:00+01:00\", \"end_datetime\": \"2026-04-11T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 2, \"repeat_nth_weekday\": 6, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"db9706d0865b79d9\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 14, \"uid\": \"smoke-monthly-last-001\", \"title\": \"Smoke Monthly Last\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-25T15:00:00+01:00\", \"end_datetime\": \"2026-04-25T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": -1, \"repeat_nth_weekday\": 6, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"9b7f63d5c08cc7c8\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 15, \"uid\": \"4e9ee4c86911a55106b9@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"e6f09ba57238f931\\\"\", \"sync_version\": 2, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 16, \"uid\": \"771bbfbfb45098265113@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"904acb970acebc29\\\"\", \"sync_version\": 3, \"updated_at\": \"2026-03-30T14:14:36+00:00\"}, {\"id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+01:00\", \"end_datetime\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"1c3e46425e90df29\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:14:37+00:00\"}], \"meta\": {\"count\": 17}}", "body_truncated": false}} {"ts": "2026-03-30T14:14:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:37 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 4474\r\n\r\n{\"data\": [{\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-06T10:00:00+01:00\", \"occurrence_end\": \"2026-03-06T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-07T10:00:00+01:00\", \"occurrence_end\": \"2026-03-07T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-08T10:00:00+01:00\", \"occurrence_end\": \"2026-03-08T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-09T10:00:00+01:00\", \"occurrence_end\": \"2026-03-09T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-12T10:00:00+01:00\", \"occurrence_end\": \"2026-03-12T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-13T10:00:00+01:00\", \"occurrence_end\": \"2026-03-13T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-14T10:00:00+01:00\", \"occurrence_end\": \"2026-03-14T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-15T10:00:00+01:00\", \"occurrence_end\": \"2026-03-15T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-16T10:00:00+01:00\", \"occurrence_end\": \"2026-03-16T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-17T10:00:00+01:00\", \"occurrence_end\": \"2026-03-17T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-18T10:00:00+01:00\", \"occurrence_end\": \"2026-03-18T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-19T10:00:00+01:00\", \"occurrence_end\": \"2026-03-19T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_truncated": false}} {"ts": "2026-03-30T14:14:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:18080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:14:37 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43446"}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:14:37 GMT\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 43446\r\n\r\n\n\n\n \n \n Calendar\n \n\n\n\n
Calendar Fixture Public Calendar UI
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n \n \n \n
\n
\n ICS Link\n CalDAV\n
\n
\n \n
\n
\n
\n
\n
\n
\n

Account Login

\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n

Register

\n
\n
\n
\n
\n
\n
\n
\n

Password Recovery

\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n

Event Details

\n
\n
\n
\n
\n
\n
\n
\n
\n

Event

\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n

Delete Single Occurrence (Exception)

\n
\n \n \n
\n
\n \n
\n \n
\n
\n
\n
\n\n\n\n", "body_truncated": false}} {"ts": "2026-03-30T14:15:07+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14085", "If-Match": "\"4b22d7e9f955d2a5\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19190330T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19201025T030000\r\nRDATE:19201025T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19210403T020000\r\nRDATE:19210403T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19211003T030000\r\nRDATE:19211003T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19220326T020000\r\nRDATE:19220326T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19221008T030000\r\nRDATE:19221008T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19230422T020000\r\nRDATE:19230422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19240413T020000\r\nRDATE:19240413T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19230916T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19250419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19270410T020000\r\nRDATE:19270410T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19280422T020000\r\nRDATE:19280422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19290421T020000\r\nRDATE:19290421T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19300413T020000\r\nRDATE:19300413T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19310419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19251004T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19330409T020000\r\nRDATE:19330409T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19331008T030000\r\nRDATE:19331008T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19340422T020000\r\nRDATE:19340422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19350414T020000\r\nRDATE:19350414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19360419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19380410T020000\r\nRDATE:19380410T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19341007T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19390416T020000\r\nRDATE:19390416T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19400225T020000\r\nRDATE:19400225T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19410504T020000\r\nRDATE:19410504T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19410810T030000\r\nRDATE:19410810T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19420405T020000\r\nRDATE:19420405T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19420809T030000\r\nRDATE:19420809T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19430404T020000\r\nRDATE:19430404T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19430815T030000\r\nRDATE:19430815T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19440402T020000\r\nRDATE:19440402T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19440917T030000\r\nRDATE:19440917T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19450402T020000\r\nRDATE:19450402T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19391119T030000\r\nRDATE:19391119T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19450715T030000\r\nRDATE:19450715T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19460414T020000\r\nRDATE:19460414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470316T020000\r\nRDATE:19470316T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470413T020000\r\nRDATE:19470413T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19451007T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470810T030000\r\nRDATE:19470810T030000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19471102T030000\r\nRDATE:19471102T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19480314T020000\r\nRDATE:19480314T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19490403T020000\r\nRDATE:19490403T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19481031T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19501022T030000\r\nRDATE:19501022T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19511021T030000\r\nRDATE:19511021T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19521026T030000\r\nRDATE:19521026T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19500416T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19540411T020000\r\nRDATE:19540411T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19550417T020000\r\nRDATE:19550417T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19560422T020000\r\nRDATE:19560422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19570414T020000\r\nRDATE:19570414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19580420T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19600410T020000\r\nRDATE:19600410T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19531004T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19610326T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19640322T020000\r\nRDATE:19640322T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19611029T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19651024T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19650321T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19671029T030000\r\nRDATE:19671029T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19681027T000000\r\nRDATE:19681027T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19680218T020000\r\nRDATE:19680218T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19711031T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19761024T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19720319T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19781029T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19811025T020000\r\nRDATE:19811025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19821024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19841028T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19881023T020000\r\nRDATE:19881023T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19891029T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19931024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19810329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19961027T020000\r\nRDATE:19961027T020000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:(DST)\r\nDTSTART:19970330T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:(STD)\r\nDTSTART:19971026T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nLAST-MODIFIED:20260330T141507Z\r\nDTSTAMP:20260330T141507Z\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nSUMMARY:test 8\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260312T160000\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nDESCRIPTION:Default Mozilla Description\r\nSEQUENCE:1\r\nX-MOZ-GENERATION:1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:15:07 GMT", "ETag": "\"898b4e9c84b4dade\""}, "body": "HTTP/1.0 201 Created\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:15:07 GMT\r\nETag: \"898b4e9c84b4dade\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:15:07+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:15:07 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "15724"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:15:07 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 15724\r\n\r\n\n\n\n /caldav/calendars/public/1.ics\n \n \n \"9e61840edd26b59c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"6f79e4a470012e8c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/3.ics\n \n \n \"7dd021ab4c51e62e\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/4.ics\n \n \n \"382b171c7e467f49\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/5.ics\n \n \n \"6a0b1853010a3060\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-005@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Finance Close\r\nDESCRIPTION:Month-end close process.\r\nLOCATION:Finance Office\r\nCATEGORIES:Finance\r\nDTSTART;TZID=Europe/London:20260430T170000\r\nDTEND;TZID=Europe/London:20260430T180000\r\nRRULE:FREQ=MONTHLY;UNTIL=20260831T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/6.ics\n \n \n \"0344b53653b1897e\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-006@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Annual Conference\r\nDESCRIPTION:Annual community conference.\r\nLOCATION:Main Hall\r\nCATEGORIES:Events\r\nDTSTART;TZID=Europe/London:20260615T100000\r\nDTEND;TZID=Europe/London:20260615T170000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/7.ics\n \n \n \"f3727cb12d14614a\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-007@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Fortnightly Coaching\r\nDESCRIPTION:Coaching check-in.\r\nLOCATION:Online\r\nCATEGORIES:Training\r\nDTSTART;TZID=Europe/London:20260407T150000\r\nDTEND;TZID=Europe/London:20260407T160000\r\nRRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20260731T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/8.ics\n \n \n \"2200904959f9c5cd\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-008@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:DST Validation Event\r\nDESCRIPTION:Validates DST transition rendering.\r\nLOCATION:Lab\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20261025T003000\r\nDTEND;TZID=Europe/London:20261025T023000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/9.ics\n \n \n \"028aa2cacadd930b\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-009@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Leap Day Marker\r\nDESCRIPTION:Leap day recurrence behavior.\r\nLOCATION:Calendar\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20280229T090000\r\nDTEND;TZID=Europe/London:20280229T100000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/10.ics\n \n \n \"1062edf9fc69e84f\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEXDATE;TZID=Europe/London:20260417T140000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n \"e5984c98962fda96\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n \"a4f11de675293164\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n \"db9706d0865b79d9\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n \"9b7f63d5c08cc7c8\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/15.ics\n \n \n \"e6f09ba57238f931\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:4e9ee4c86911a55106b9@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/16.ics\n \n \n \"904acb970acebc29\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:771bbfbfb45098265113@calendar-wp-plugin\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Smoke Daily Exception TZ\r\nDESCRIPTION:tz-key\r\nDTSTART;TZID=Europe/London:20260302T100000\r\nDTEND;TZID=Europe/London:20260302T110000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-exdate-import.ics\n \n \n \"1c3e46425e90df29\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-exdate-import-001\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:Smoke EXDATE Import\r\nDTSTART;TZID=Europe/London:20260302T100000\r\nDTEND;TZID=Europe/London:20260302T110000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n \"898b4e9c84b4dade\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nDTSTAMP:20260330T141507Z\r\nSUMMARY:test 8\r\nDESCRIPTION:Default Mozilla Description\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260312T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_truncated": false}} {"ts": "2026-03-30T14:15:13+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:15:13 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6140"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:15:13 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 6140\r\n\r\n\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"9e61840edd26b59c\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"6f79e4a470012e8c\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n text/calendar; charset=utf-8\"7dd021ab4c51e62e\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/4.ics\n \n \n text/calendar; charset=utf-8\"382b171c7e467f49\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/5.ics\n \n \n text/calendar; charset=utf-8\"6a0b1853010a3060\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/6.ics\n \n \n text/calendar; charset=utf-8\"0344b53653b1897e\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/7.ics\n \n \n text/calendar; charset=utf-8\"f3727cb12d14614a\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/8.ics\n \n \n text/calendar; charset=utf-8\"2200904959f9c5cd\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/9.ics\n \n \n text/calendar; charset=utf-8\"028aa2cacadd930b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/10.ics\n \n \n text/calendar; charset=utf-8\"1062edf9fc69e84f\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n text/calendar; charset=utf-8\"e5984c98962fda96\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n text/calendar; charset=utf-8\"a4f11de675293164\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n text/calendar; charset=utf-8\"db9706d0865b79d9\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n text/calendar; charset=utf-8\"9b7f63d5c08cc7c8\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/15.ics\n \n \n text/calendar; charset=utf-8\"e6f09ba57238f931\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/16.ics\n \n \n text/calendar; charset=utf-8\"904acb970acebc29\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-exdate-import.ics\n \n \n text/calendar; charset=utf-8\"1c3e46425e90df29\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n text/calendar; charset=utf-8\"898b4e9c84b4dade\"\n \n HTTP/1.1 200 OK\n \n\n\n", "body_truncated": false}} {"ts": "2026-03-30T14:15:13+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "280", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/16.ics/caldav/calendars/public/15.ics", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:15:13 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "15724"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:15:13 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 15724\r\n\r\n\n\n\n /caldav/calendars/public/1.ics\n \n \n \"9e61840edd26b59c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"6f79e4a470012e8c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/3.ics\n \n \n \"7dd021ab4c51e62e\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/4.ics\n \n \n \"382b171c7e467f49\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/5.ics\n \n \n \"6a0b1853010a3060\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-005@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Finance Close\r\nDESCRIPTION:Month-end close process.\r\nLOCATION:Finance Office\r\nCATEGORIES:Finance\r\nDTSTART;TZID=Europe/London:20260430T170000\r\nDTEND;TZID=Europe/London:20260430T180000\r\nRRULE:FREQ=MONTHLY;UNTIL=20260831T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/6.ics\n \n \n \"0344b53653b1897e\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-006@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Annual Conference\r\nDESCRIPTION:Annual community conference.\r\nLOCATION:Main Hall\r\nCATEGORIES:Events\r\nDTSTART;TZID=Europe/London:20260615T100000\r\nDTEND;TZID=Europe/London:20260615T170000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/7.ics\n \n \n \"f3727cb12d14614a\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-007@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Fortnightly Coaching\r\nDESCRIPTION:Coaching check-in.\r\nLOCATION:Online\r\nCATEGORIES:Training\r\nDTSTART;TZID=Europe/London:20260407T150000\r\nDTEND;TZID=Europe/London:20260407T160000\r\nRRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20260731T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/8.ics\n \n \n \"2200904959f9c5cd\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-008@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:DST Validation Event\r\nDESCRIPTION:Validates DST transition rendering.\r\nLOCATION:Lab\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20261025T003000\r\nDTEND;TZID=Europe/London:20261025T023000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/9.ics\n \n \n \"028aa2cacadd930b\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-009@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Leap Day Marker\r\nDESCRIPTION:Leap day recurrence behavior.\r\nLOCATION:Calendar\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20280229T090000\r\nDTEND;TZID=Europe/London:20280229T100000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/10.ics\n \n \n \"1062edf9fc69e84f\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEXDATE;TZID=Europe/London:20260417T140000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n \"e5984c98962fda96\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n \"a4f11de675293164\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n \"db9706d0865b79d9\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n \"9b7f63d5c08cc7c8\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/15.ics\n \n \n \"e6f09ba57238f931\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:4e9ee4c86911a55106b9@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/16.ics\n \n \n \"904acb970acebc29\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:771bbfbfb45098265113@calendar-wp-plugin\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Smoke Daily Exception TZ\r\nDESCRIPTION:tz-key\r\nDTSTART;TZID=Europe/London:20260302T100000\r\nDTEND;TZID=Europe/London:20260302T110000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-exdate-import.ics\n \n \n \"1c3e46425e90df29\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-exdate-import-001\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:Smoke EXDATE Import\r\nDTSTART;TZID=Europe/London:20260302T100000\r\nDTEND;TZID=Europe/London:20260302T110000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n \"898b4e9c84b4dade\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nDTSTAMP:20260330T141513Z\r\nSUMMARY:test 8\r\nDESCRIPTION:Default Mozilla Description\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260312T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_truncated": false}} {"ts": "2026-03-30T14:15:29+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14128", "If-Match": "\"898b4e9c84b4dade\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19190330T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19201025T030000\r\nRDATE:19201025T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19210403T020000\r\nRDATE:19210403T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19211003T030000\r\nRDATE:19211003T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19220326T020000\r\nRDATE:19220326T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19221008T030000\r\nRDATE:19221008T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19230422T020000\r\nRDATE:19230422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19240413T020000\r\nRDATE:19240413T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19230916T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19250419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19270410T020000\r\nRDATE:19270410T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19280422T020000\r\nRDATE:19280422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19290421T020000\r\nRDATE:19290421T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19300413T020000\r\nRDATE:19300413T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19310419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19251004T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19330409T020000\r\nRDATE:19330409T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19331008T030000\r\nRDATE:19331008T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19340422T020000\r\nRDATE:19340422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19350414T020000\r\nRDATE:19350414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19360419T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19380410T020000\r\nRDATE:19380410T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19341007T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19390416T020000\r\nRDATE:19390416T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19400225T020000\r\nRDATE:19400225T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19410504T020000\r\nRDATE:19410504T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19410810T030000\r\nRDATE:19410810T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19420405T020000\r\nRDATE:19420405T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19420809T030000\r\nRDATE:19420809T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19430404T020000\r\nRDATE:19430404T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19430815T030000\r\nRDATE:19430815T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19440402T020000\r\nRDATE:19440402T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19440917T030000\r\nRDATE:19440917T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19450402T020000\r\nRDATE:19450402T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19391119T030000\r\nRDATE:19391119T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19450715T030000\r\nRDATE:19450715T030000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19460414T020000\r\nRDATE:19460414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470316T020000\r\nRDATE:19470316T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+020000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470413T020000\r\nRDATE:19470413T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19451007T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+020000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19470810T030000\r\nRDATE:19470810T030000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19471102T030000\r\nRDATE:19471102T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19480314T020000\r\nRDATE:19480314T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19490403T020000\r\nRDATE:19490403T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19481031T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19501022T030000\r\nRDATE:19501022T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19511021T030000\r\nRDATE:19511021T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19521026T030000\r\nRDATE:19521026T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19500416T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19540411T020000\r\nRDATE:19540411T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19550417T020000\r\nRDATE:19550417T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19560422T020000\r\nRDATE:19560422T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19570414T020000\r\nRDATE:19570414T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19580420T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19600410T020000\r\nRDATE:19600410T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19531004T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19610326T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19640322T020000\r\nRDATE:19640322T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19611029T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19651024T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19650321T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19671029T030000\r\nRDATE:19671029T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19681027T000000\r\nRDATE:19681027T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19680218T020000\r\nRDATE:19680218T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19711031T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19761024T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19720319T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19781029T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19811025T020000\r\nRDATE:19811025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19821024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19841028T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19881023T020000\r\nRDATE:19881023T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19891029T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19931024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19810329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19961027T020000\r\nRDATE:19961027T020000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:(DST)\r\nDTSTART:19970330T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:(STD)\r\nDTSTART:19971026T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nLAST-MODIFIED:20260330T141529Z\r\nDTSTAMP:20260330T141529Z\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nSUMMARY:test 8\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260312T160000\r\nEXDATE;TZID=Europe/London:20260313T160000\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nDESCRIPTION:Default Mozilla Description\r\nSEQUENCE:1\r\nX-MOZ-GENERATION:1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:15:29 GMT", "ETag": "\"548f92e38ae08226\""}, "body": "HTTP/1.0 200 OK\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:15:29 GMT\r\nETag: \"548f92e38ae08226\"\r\n\r\n", "body_truncated": false}} {"ts": "2026-03-30T14:15:29+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:15:29 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "15740"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:15:29 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 15740\r\n\r\n\n\n\n /caldav/calendars/public/1.ics\n \n \n \"9e61840edd26b59c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"6f79e4a470012e8c\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/3.ics\n \n \n \"7dd021ab4c51e62e\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/4.ics\n \n \n \"382b171c7e467f49\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/5.ics\n \n \n \"6a0b1853010a3060\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-005@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Finance Close\r\nDESCRIPTION:Month-end close process.\r\nLOCATION:Finance Office\r\nCATEGORIES:Finance\r\nDTSTART;TZID=Europe/London:20260430T170000\r\nDTEND;TZID=Europe/London:20260430T180000\r\nRRULE:FREQ=MONTHLY;UNTIL=20260831T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/6.ics\n \n \n \"0344b53653b1897e\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-006@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Annual Conference\r\nDESCRIPTION:Annual community conference.\r\nLOCATION:Main Hall\r\nCATEGORIES:Events\r\nDTSTART;TZID=Europe/London:20260615T100000\r\nDTEND;TZID=Europe/London:20260615T170000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/7.ics\n \n \n \"f3727cb12d14614a\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-007@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Fortnightly Coaching\r\nDESCRIPTION:Coaching check-in.\r\nLOCATION:Online\r\nCATEGORIES:Training\r\nDTSTART;TZID=Europe/London:20260407T150000\r\nDTEND;TZID=Europe/London:20260407T160000\r\nRRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20260731T235959\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/8.ics\n \n \n \"2200904959f9c5cd\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-008@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:DST Validation Event\r\nDESCRIPTION:Validates DST transition rendering.\r\nLOCATION:Lab\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20261025T003000\r\nDTEND;TZID=Europe/London:20261025T023000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/9.ics\n \n \n \"028aa2cacadd930b\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-009@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Leap Day Marker\r\nDESCRIPTION:Leap day recurrence behavior.\r\nLOCATION:Calendar\r\nCATEGORIES:QA\r\nDTSTART;TZID=Europe/London:20280229T090000\r\nDTEND;TZID=Europe/London:20280229T100000\r\nRRULE:FREQ=YEARLY;COUNT=3\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/10.ics\n \n \n \"1062edf9fc69e84f\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEXDATE;TZID=Europe/London:20260417T140000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n \"e5984c98962fda96\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n \"a4f11de675293164\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n \"db9706d0865b79d9\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n \"9b7f63d5c08cc7c8\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/15.ics\n \n \n \"e6f09ba57238f931\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:4e9ee4c86911a55106b9@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/16.ics\n \n \n \"904acb970acebc29\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:771bbfbfb45098265113@calendar-wp-plugin\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Smoke Daily Exception TZ\r\nDESCRIPTION:tz-key\r\nDTSTART;TZID=Europe/London:20260302T100000\r\nDTEND;TZID=Europe/London:20260302T110000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-exdate-import.ics\n \n \n \"1c3e46425e90df29\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-exdate-import-001\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:Smoke EXDATE Import\r\nDTSTART;TZID=Europe/London:20260302T100000\r\nDTEND;TZID=Europe/London:20260302T110000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n \"548f92e38ae08226\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:ed617bc7-66c1-474d-a467-86565e680820\r\nDTSTAMP:20260330T141529Z\r\nSUMMARY:test 8\r\nDESCRIPTION:Default Mozilla Description\r\nDTSTART;TZID=Europe/London:20260302T160000\r\nDTEND;TZID=Europe/London:20260302T170000\r\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\r\nEXDATE;TZID=Europe/London:20260312T160000,20260313T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_truncated": false}} {"ts": "2026-03-30T14:15:35+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:15:35 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6140"}, "body": "HTTP/1.0 207 Multi-Status\r\nServer: CalendarFixture/0.1 Python/3.13.5\r\nDate: Mon, 30 Mar 2026 14:15:35 GMT\r\nContent-Type: application/xml; charset=utf-8\r\nContent-Length: 6140\r\n\r\n\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"9e61840edd26b59c\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"6f79e4a470012e8c\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n text/calendar; charset=utf-8\"7dd021ab4c51e62e\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/4.ics\n \n \n text/calendar; charset=utf-8\"382b171c7e467f49\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/5.ics\n \n \n text/calendar; charset=utf-8\"6a0b1853010a3060\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/6.ics\n \n \n text/calendar; charset=utf-8\"0344b53653b1897e\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/7.ics\n \n \n text/calendar; charset=utf-8\"f3727cb12d14614a\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/8.ics\n \n \n text/calendar; charset=utf-8\"2200904959f9c5cd\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/9.ics\n \n \n text/calendar; charset=utf-8\"028aa2cacadd930b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/10.ics\n \n \n text/calendar; charset=utf-8\"1062edf9fc69e84f\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n text/calendar; charset=utf-8\"e5984c98962fda96\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n text/calendar; charset=utf-8\"a4f11de675293164\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-ordinal.ics\n \n \n text/calendar; charset=utf-8\"db9706d0865b79d9\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-monthly-last.ics\n \n \n text/calendar; charset=utf-8\"9b7f63d5c08cc7c8\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/15.ics\n \n \n text/calendar; charset=utf-8\"e6f09ba57238f931\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/16.ics\n \n \n text/calendar; charset=utf-8\"904acb970acebc29\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/smoke-exdate-import.ics\n \n \n text/calendar; charset=utf-8\"1c3e46425e90df29\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/ed617bc7-66c1-474d-a467-86565e680820.ics\n \n \n text/calendar; charset=utf-8\"548f92e38ae08226\"\n \n HTTP/1.1 200 OK\n \n\n\n", "body_truncated": false}} {"ts": "2026-03-30T14:20:15+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:15 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"34af04b9ccbadb9d\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:16:53+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a33ed", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:20:15+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:15 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"138a8bec591c96d2\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142015Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T142015Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T142015Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T142015Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T14:20:15+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:15 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"34af04b9ccbadb9d\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142015Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T14:20:15+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:15 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:20:15+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:15 GMT", "ETag": "\"e13f867894f5d240\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e13f867894f5d240\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T142016Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "ETag": "\"3a6ba02a67b14874\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3a6ba02a67b14874\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T142016Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "ETag": "\"1710ae19fe56d567\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"1710ae19fe56d567\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T142016Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "ETag": "\"98bbc37be6ca6788\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"98bbc37be6ca6788\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T142016Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 15, \"uid\": \"809b5d43371ed23850b0@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"1f3f52be73f1461b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:20:16+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/15/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/15.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"190e382546a84122\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:809b5d43371ed23850b0@calendar-wp-plugin\r\nDTSTAMP:20260330T142016Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"8483fc55d1de7d7606fc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"bc3799c352e91742\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:20:16+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"8483fc55d1de7d7606fc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"8483fc55d1de7d7606fc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"8483fc55d1de7d7606fc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"8483fc55d1de7d7606fc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"8483fc55d1de7d7606fc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"8483fc55d1de7d7606fc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"8483fc55d1de7d7606fc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"8483fc55d1de7d7606fc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "ETag": "\"d037ce8fd6055b51\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11006"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"34af04b9ccbadb9d\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:16:53+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a33ed", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:20:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:16 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43446"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T14:20:26+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/admin/diagnostics?limit=2&as=admin", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:20:26 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "2521"}, "body": "{\"data\": [{\"ts\": \"2026-03-30T14:20:16+00:00\", \"client\": \"127.0.0.1\", \"method\": \"GET\", \"path\": \"/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1\", \"request\": {\"headers\": {\"Host\": \"127.0.0.1:8080\", \"User-Agent\": \"curl/8.14.1\", \"Accept\": \"*/*\", \"X-WP-User\": \"admin\"}, \"body\": \"\", \"body_bytes\": 0, \"body_truncated\": false}, \"response\": {\"status\": 200, \"headers\": {\"Server\": \"CalendarFixture/0.1 Python/3.13.5\", \"Date\": \"Mon, 30 Mar 2026 14:20:16 GMT\", \"Content-Type\": \"application/json; charset=utf-8\", \"Content-Length\": \"4474\"}, \"body\": \"{\\\"data\\\": [{\\\"event_id\\\": 17, \\\"uid\\\": \\\"smoke-exdate-import-001\\\", \\\"title\\\": \\\"Smoke EXDATE Import\\\", \\\"description\\\": \\\"\\\", \\\"location\\\": \\\"\\\", \\\"category\\\": \\\"\\\", \\\"all_day_event\\\": false, \\\"occurrence_start\\\": \\\"2026-03-02T10:00:00+01:00\\\", \\\"occurrence_end\\\": \\\"2026-03-02T11:00:00+01:00\\\", \\\"repeat_type\\\": \\\"daily\\\"}, {\\\"event_id\\\": 17, \\\"uid\\\": \\\"smoke-exdate-import-001\\\", \\\"title\\\": \\\"Smoke EXDATE Import\\\", \\\"description\\\": \\\"\\\", \\\"location\\\": \\\"\\\", \\\"category\\\": \\\"\\\", \\\"all_day_event\\\": false, \\\"occurrence_start\\\": \\\"2026-03-03T10:00:00+01:00\\\", \\\"occurrence_end\\\": \\\"2026-03-03T11:00:00+01:00\\\", \\\"repeat_type\\\": \\\"daily\\\"}, {\\\"e ...(truncated)", "body_bytes": 2521, "body_truncated": false}} {"ts": "2026-03-30T14:22:19+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:22:19 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5799"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:22:20+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "1071", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/smoke-exdate-import.ics/caldav/calendars/public/16.ics/caldav/calendars/public/15.ics/caldav/calendars/public/smoke-monthly-last.ics/caldav/calendars/public/smoke-monthly-ordinal.ics/caldav/calendars/public/smoke-monthly-nth.ics/caldav/calendars/public/smoke-vtimezone.ics/caldav/calendars/public/10.ics/caldav/calendars/public/9.ics/caldav/calendars/public/8.ics/caldav/calendars/public/7.ics/caldav/calendars/public/6.ics/caldav/calendars/public/5.ics/caldav/calendars/public/4.ics/caldav/calendars/public/3.ics/caldav/calendars/public/2.ics/caldav/calendars/public/1.ics", "body_bytes": 1071, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:22:20 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "14800"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"34af04b9ccbadb9d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142220Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"a33ed4025fd8b61d\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:22:44+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "If-Match": "\"d037ce8fd6055b51\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:22:44 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:22:49+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "If-Match": "\"d2a6091e74fce26b\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:22:49 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:23:21+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/267d03e6-66cc-458b-aaf2-400f5b0e2108.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14110", "If-None-Match": "*", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:21 GMT", "ETag": "\"5e4c0898488797e4\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:23:21+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/267d03e6-66cc-458b-aaf2-400f5b0e2108.ics", "body_bytes": 266, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:21 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "13893"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"34af04b9ccbadb9d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142321Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"a33ed4025fd8b61d\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:23:23+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:23 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5509"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:23:31+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/267d03e6-66cc-458b-aaf2-400f5b0e2108.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14085", "If-Match": "\"5e4c0898488797e4\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:31 GMT", "ETag": "\"6638686e8b73b19c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:23:31+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/267d03e6-66cc-458b-aaf2-400f5b0e2108.ics", "body_bytes": 266, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:31 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "13936"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"34af04b9ccbadb9d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142331Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"a33ed4025fd8b61d\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:23:33+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:33 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5509"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:23:44+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/267d03e6-66cc-458b-aaf2-400f5b0e2108.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14128", "If-Match": "\"6638686e8b73b19c\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:44 GMT", "ETag": "\"fc290607cac191f8\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:23:44+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/267d03e6-66cc-458b-aaf2-400f5b0e2108.ics", "body_bytes": 266, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:44 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "13952"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"34af04b9ccbadb9d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142344Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"a33ed4025fd8b61d\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:23:46+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:46 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5509"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:23:50+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/caldav/calendars/public/267d03e6-66cc-458b-aaf2-400f5b0e2108.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "If-Match": "\"fc290607cac191f8\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:23:50 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:24:33+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/ce2caf8e-6197-40a3-9c7b-e6eae7041903.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14116", "If-None-Match": "*", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:24:33 GMT", "ETag": "\"32987e446d88f0f9\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:24:33+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/ce2caf8e-6197-40a3-9c7b-e6eae7041903.ics", "body_bytes": 266, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:24:33 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "13902"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"34af04b9ccbadb9d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142433Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"a33ed4025fd8b61d\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:24:36+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:24:36 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5509"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:24:53+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/ce2caf8e-6197-40a3-9c7b-e6eae7041903.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14094", "If-Match": "\"32987e446d88f0f9\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:24:53 GMT", "ETag": "\"05a6e14b3e8da6a4\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:24:53+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/ce2caf8e-6197-40a3-9c7b-e6eae7041903.ics", "body_bytes": 266, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:24:53 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "13945"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"34af04b9ccbadb9d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142453Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"a33ed4025fd8b61d\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:25:01+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:25:01 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5509"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:25:26+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/ce2caf8e-6197-40a3-9c7b-e6eae7041903.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14137", "If-Match": "\"05a6e14b3e8da6a4\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:25:26 GMT", "ETag": "\"92da99cdae305c8c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:25:26+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "266", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/ce2caf8e-6197-40a3-9c7b-e6eae7041903.ics", "body_bytes": 266, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:25:26 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "13961"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"34af04b9ccbadb9d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142526Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"a33ed4025fd8b61d\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:25:35+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:25:35 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5509"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:25:46+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/caldav/calendars/public/ce2caf8e-6197-40a3-9c7b-e6eae7041903.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "If-Match": "\"92da99cdae305c8c\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:25:46 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:26:01+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/7.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14137", "If-Match": "\"279b10d3b419d6e8\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:26:01 GMT", "ETag": "\"37b3e390499adf51\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:26:01+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "231", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/7.ics", "body_bytes": 231, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:26:01 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "13055"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"34af04b9ccbadb9d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142601Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"a33ed4025fd8b61d\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:26:11+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:26:11 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5168"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:26:23+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:26:23 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5168"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:26:38+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/4.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14108", "If-Match": "\"f4b1379e60ebbe47\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:26:38 GMT", "ETag": "\"13292670bde364d3\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:26:38+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "231", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/4.ics", "body_bytes": 231, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:26:38 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "13098"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"34af04b9ccbadb9d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T142638Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"a33ed4025fd8b61d\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:26:58+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:26:58 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5168"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:27:17+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:27:17 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5168"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:27:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:27:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "7885"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:27:41+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:27:41 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4227"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"al", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:27:57+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:27:57 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "5168"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"34af04b9ccbadb9d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"a33ed4025fd8b61d\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:34:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:34:54 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "9739"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"34af04b9ccbadb9d\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:16:53+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a33ed", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:34:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:34:54 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3db8720849bf27c9\"", "Content-Length": "4502"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T143454Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T143454Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T143454Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T143454Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T14:34:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:34:54 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"34af04b9ccbadb9d\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T143454Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T14:34:54+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 409, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:34:54 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "84"}, "body": "{\"error\": {\"code\": \"conflict_error\", \"message\": \"occurrence already has exception\"}}", "body_bytes": 84, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"4b16804fb6cdace4\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:34:59+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"2bc41", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"b06c8be2295443df\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"4b16804fb6cdace4\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "ETag": "\"f7e38a114c5f0aa1\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"f7e38a114c5f0aa1\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "ETag": "\"afd42f662e664a70\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"afd42f662e664a70\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "ETag": "\"ff1619de2d36d47d\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"ff1619de2d36d47d\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "ETag": "\"3c34ae5dcf09bc94\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3c34ae5dcf09bc94\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 15, \"uid\": \"671dfedc5209e0cbc285@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"318e71f9de064c57\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:35:07+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/15/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/15.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5a4321ef70dcf8c4\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:671dfedc5209e0cbc285@calendar-wp-plugin\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"da0528511b5553ab\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:35:07+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "ETag": "\"17595aec3f430fad\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11006"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"4b16804fb6cdace4\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:34:59+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"2bc41", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "ETag": "\"9ad47bc1cfbe571b\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:35:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:07 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"9ad47bc1cfbe571b\"", "Content-Length": "316"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T143507Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 316, "body_truncated": false}} {"ts": "2026-03-30T14:35:44+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=week&date=2026-04-27", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:44 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "1345"}, "body": "{\"data\": [{\"event_id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-29T12:30:00+01:00\", \"occurrence_end\": \"2026-04-29T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-29T12:30:00+01:00\", \"occurrence_end\": \"2026-04-29T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 5, \"uid\": \"fixture-ce-005@calendar-wp-plugin\", \"title\": \"Finance Close\", \"description\": \"Month-end close process.\", \"location\": \"Finance Office\", \"category\": \"Finance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-30T17:00:00+01:00\", \"occurrence_end\": \"2026-04-30T18:00:00+01:00\", \"repeat_type\": \"monthly\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_sta ...(truncated)", "body_bytes": 1345, "body_truncated": false}} {"ts": "2026-03-30T14:35:54+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-27", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:54 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:35:57+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-28", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:57 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:35:57+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-29", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:57 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "667"}, "body": "{\"data\": [{\"event_id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-29T12:30:00+01:00\", \"occurrence_end\": \"2026-04-29T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-29T12:30:00+01:00\", \"occurrence_end\": \"2026-04-29T13:30:00+01:00\", \"repeat_type\": \"weekly\"}], \"meta\": {\"count\": 2, \"view\": \"day\"}}", "body_bytes": 667, "body_truncated": false}} {"ts": "2026-03-30T14:35:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "376"}, "body": "{\"data\": [{\"event_id\": 5, \"uid\": \"fixture-ce-005@calendar-wp-plugin\", \"title\": \"Finance Close\", \"description\": \"Month-end close process.\", \"location\": \"Finance Office\", \"category\": \"Finance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-30T17:00:00+01:00\", \"occurrence_end\": \"2026-04-30T18:00:00+01:00\", \"repeat_type\": \"monthly\"}], \"meta\": {\"count\": 1, \"view\": \"day\"}}", "body_bytes": 376, "body_truncated": false}} {"ts": "2026-03-30T14:35:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:35:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "395"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}], \"meta\": {\"count\": 1, \"view\": \"day\"}}", "body_bytes": 395, "body_truncated": false}} {"ts": "2026-03-30T14:36:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-05-02", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:36:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:02 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "395"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}], \"meta\": {\"count\": 1, \"view\": \"day\"}}", "body_bytes": 395, "body_truncated": false}} {"ts": "2026-03-30T14:36:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:02 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "376"}, "body": "{\"data\": [{\"event_id\": 5, \"uid\": \"fixture-ce-005@calendar-wp-plugin\", \"title\": \"Finance Close\", \"description\": \"Month-end close process.\", \"location\": \"Finance Office\", \"category\": \"Finance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-30T17:00:00+01:00\", \"occurrence_end\": \"2026-04-30T18:00:00+01:00\", \"repeat_type\": \"monthly\"}], \"meta\": {\"count\": 1, \"view\": \"day\"}}", "body_bytes": 376, "body_truncated": false}} {"ts": "2026-03-30T14:36:20+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-users&as=admin", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:20 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43446"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T14:36:20+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:20 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "9410"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"ui", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:36:20+00:00", "client": "127.0.0.1", "method": "GET", "path": "/favicon.ico", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "image/avif,image/jxl,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Referer": "http://localhost:8080/calendar", "Sec-Fetch-Dest": "image", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=6", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:20 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T14:36:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:36:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=list&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "28439"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"ebaa6e153c2949c66437@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"ui", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:36:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:30 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:36:31+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-03-31", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:31 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:36:32+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:32 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "367"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}], \"meta\": {\"count\": 1, \"view\": \"day\"}}", "body_bytes": 367, "body_truncated": false}} {"ts": "2026-03-30T14:36:32+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-02", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:32 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:36:33+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:33 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "367"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}], \"meta\": {\"count\": 1, \"view\": \"day\"}}", "body_bytes": 367, "body_truncated": false}} {"ts": "2026-03-30T14:36:42+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-02", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:42 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:36:42+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-03", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:42 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "395"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}], \"meta\": {\"count\": 1, \"view\": \"day\"}}", "body_bytes": 395, "body_truncated": false}} {"ts": "2026-03-30T14:36:42+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-04", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:42 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:36:43+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-05", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:43 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "49"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"day\"}}", "body_bytes": 49, "body_truncated": false}} {"ts": "2026-03-30T14:36:44+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=day&date=2026-04-06", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:36:44 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "354"}, "body": "{\"data\": [{\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}], \"meta\": {\"count\": 1, \"view\": \"day\"}}", "body_bytes": 354, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"d67b5ff89b3e11f4\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:37:14+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"dd76a", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"6e86a3a3cb79f222\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"d67b5ff89b3e11f4\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "ETag": "\"cb820e20ce5f05f9\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"cb820e20ce5f05f9\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "ETag": "\"fc237d6ea5bab15b\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"fc237d6ea5bab15b\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "ETag": "\"a04576a14aacbb44\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"a04576a14aacbb44\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "ETag": "\"d4593cbbeb887b80\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"d4593cbbeb887b80\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 15, \"uid\": \"35ef9e3fa5fc95e6feeb@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"88afe21d04a4e934\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:37:16+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/15/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/15.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"2c338e3049044bb6\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:35ef9e3fa5fc95e6feeb@calendar-wp-plugin\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"05e54c633fc9404d7909@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"870fa79824125dc3\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:37:16+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"05e54c633fc9404d7909@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"05e54c633fc9404d7909@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"05e54c633fc9404d7909@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"05e54c633fc9404d7909@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"05e54c633fc9404d7909@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"05e54c633fc9404d7909@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"05e54c633fc9404d7909@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"05e54c633fc9404d7909@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "ETag": "\"032ada2f4689a236\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11006"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"d67b5ff89b3e11f4\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:37:14+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"dd76a", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "ETag": "\"41474f0130ac56c2\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"41474f0130ac56c2\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T143716Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11634"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"d67b5ff89b3e11f4\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:37:14+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"dd76a", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T14:37:16+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:37:16 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43446"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T14:38:27+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:38:27 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "3570"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"a1c06c7625070956\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"31413754bab11f12\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3570, "body_truncated": false}} {"ts": "2026-03-30T14:38:29+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "655", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/10.ics/caldav/calendars/public/9.ics/caldav/calendars/public/8.ics/caldav/calendars/public/7.ics/caldav/calendars/public/6.ics/caldav/calendars/public/5.ics/caldav/calendars/public/4.ics/caldav/calendars/public/3.ics/caldav/calendars/public/2.ics/caldav/calendars/public/1.ics", "body_bytes": 655, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:38:29 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "8815"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"a1c06c7625070956\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T143829Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"31413754bab11f12\"\n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:38:37+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/4.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14108", "If-Match": "\"0959513a689d7faf\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:38:37 GMT", "ETag": "\"c3b404268b1e2a58\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:38:37+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "231", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/4.ics", "body_bytes": 231, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:38:37 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "8858"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"a1c06c7625070956\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T143837Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"31413754bab11f12\"\n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:38:43+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:38:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "3570"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"a1c06c7625070956\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"31413754bab11f12\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3570, "body_truncated": false}} {"ts": "2026-03-30T14:38:50+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:38:50 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "7109"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:38:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-users&as=admin", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:38:58 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43446"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T14:38:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:38:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "51"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"month\"}}", "body_bytes": 51, "body_truncated": false}} {"ts": "2026-03-30T14:38:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/favicon.ico", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "image/avif,image/jxl,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Referer": "http://localhost:8080/calendar", "Sec-Fetch-Dest": "image", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=6", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:38:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T14:39:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:39:02 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "7109"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:39:09+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:39:09 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "3708"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"custom\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"al ...(truncated)", "body_bytes": 3708, "body_truncated": false}} {"ts": "2026-03-30T14:39:24+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:39:24 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "3570"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"a1c06c7625070956\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"31413754bab11f12\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3570, "body_truncated": false}} {"ts": "2026-03-30T14:42:51+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:42:51 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "8858"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"a1c06c7625070956\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T144251Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"31413754bab11f12\"\n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:43:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:43:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"7751edcdd53548b6\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:43:34+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"052f8", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:43:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:43:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"c97f86eaea834f45\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T144335Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T144335Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T144335Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T144335Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T14:43:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:43:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"7751edcdd53548b6\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T144335Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T14:43:36+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:43:36 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "8815"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"7751edcdd53548b6\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T144336Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"052f81957f9aae6d\"\n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:44:20+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:20 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"5ec78c2d14c408f9\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T144420Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T14:44:29+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:29 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"7dba3d192408fd8d\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:44:28+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"8dd5f", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:44:29+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:29 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb9acb23074ed19b\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T144429Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T144429Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T144429Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T144429Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T14:44:29+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:29 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"7dba3d192408fd8d\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T144429Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"072b1b494ba4f968\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T144430Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "ETag": "\"5adcf0bbdfde8074\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5adcf0bbdfde8074\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T144430Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "ETag": "\"1d474bd1d0cd4bf5\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"1d474bd1d0cd4bf5\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T144430Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "ETag": "\"4bb73834167ee601\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"4bb73834167ee601\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T144430Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "ETag": "\"98b19a1e7ae18985\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"98b19a1e7ae18985\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T144430Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 15, \"uid\": \"a63f8ecbbdc94c49bc3f@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a7edae8a0700321c\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:44:30+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/15/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/15.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5cdf8a9141d5dbc9\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:a63f8ecbbdc94c49bc3f@calendar-wp-plugin\r\nDTSTAMP:20260330T144430Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"fe9f3570de454c2f\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:44:30+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "ETag": "\"2e770edf61e4a71a\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11006"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"7dba3d192408fd8d\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:44:28+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"8dd5f", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "ETag": "\"5c32f479683cad08\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5c32f479683cad08\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T144430Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11634"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"7dba3d192408fd8d\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T14:44:28+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"8dd5f", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T14:44:30+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:30 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T14:44:58+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:58 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6130"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"53fb93409a868c3b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"15e21dd53bfeddfc\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:44:58+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "1143", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/smoke-cancelled-occurrence.ics/caldav/calendars/public/smoke-exdate-import.ics/caldav/calendars/public/16.ics/caldav/calendars/public/15.ics/caldav/calendars/public/smoke-monthly-last.ics/caldav/calendars/public/smoke-monthly-ordinal.ics/caldav/calendars/public/smoke-monthly-nth.ics/caldav/calendars/public/smoke-vtimezone.ics/caldav/calendars/public/10.ics/caldav/calendars/public/9.ics/caldav/calendars/public/8.ics/caldav/calendars/public/7.ics/caldav/calendars/public/6.ics/caldav/calendars/public/5.ics/caldav/calendars/public/4.ics/caldav/calendars/public/3.ics/caldav/calendars/public/2.ics/caldav/calendars/public/1.ics", "body_bytes": 1143, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:44:58 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "15419"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"53fb93409a868c3b\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T144458Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"15e21dd53bfeddfc\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T14:45:10+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/4.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14108", "If-Match": "\"34008884f1eb8394\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:45:10 GMT", "ETag": "\"2296d29d18e51e25\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:45:10+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "231", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/4.ics", "body_bytes": 231, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:45:10 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1040"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"2296d29d18e51e25\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T144510Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 1040, "body_truncated": false}} {"ts": "2026-03-30T14:45:12+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:45:12 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6130"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"53fb93409a868c3b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"15e21dd53bfeddfc\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:45:54+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:45:54 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6130"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"53fb93409a868c3b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"15e21dd53bfeddfc\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:46:14+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-users&as=admin", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:14 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T14:46:14+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:14 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "10580"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"ui", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:46:18+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:18 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "9409"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:46:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:19 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6046"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"custom\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-06T1", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:46:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-06-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5317"}, "body": "{\"data\": [{\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-06-02T15:00:00+01:00\", \"occurrence_end\": \"2026-06-02T16:00:00+01:00\", \"repeat_type\": \"custom\"}, {\"event_id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"occurrence_start\": \"2026-06-03T12:30:00+01:00\", \"occurrence_end\": \"2026-06-03T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-06-03T12:30:00+01:00\", \"occurrence_end\": \"2026-06-03T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"occurrence_start\": \"2026-06-10T12:30:00+01:", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:46:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6046"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"custom\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-06T1", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:46:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "9409"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:46:34+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:34 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6046"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"custom\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-06T1", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:46:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-users&as=admin", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:37 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T14:46:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "10580"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"ui", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:46:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/favicon.ico", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "image/avif,image/jxl,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Referer": "http://localhost:8080/calendar", "Sec-Fetch-Dest": "image", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=6", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T14:46:38+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:38 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "9409"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:46:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:46:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6046"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"custom\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-06T1", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:47:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=week&date=2026-04-27", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:47:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "1345"}, "body": "{\"data\": [{\"event_id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-29T12:30:00+01:00\", \"occurrence_end\": \"2026-04-29T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-29T12:30:00+01:00\", \"occurrence_end\": \"2026-04-29T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 5, \"uid\": \"fixture-ce-005@calendar-wp-plugin\", \"title\": \"Finance Close\", \"description\": \"Month-end close process.\", \"location\": \"Finance Office\", \"category\": \"Finance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-30T17:00:00+01:00\", \"occurrence_end\": \"2026-04-30T18:00:00+01:00\", \"repeat_type\": \"monthly\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_sta ...(truncated)", "body_bytes": 1345, "body_truncated": false}} {"ts": "2026-03-30T14:47:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:47:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "9409"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:47:06+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:47:06 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6046"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"custom\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-06T1", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:47:53+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/10.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14137", "If-Match": "\"f22edec26fd96749\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:47:53 GMT", "ETag": "\"e6fa695514466881\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:47:53+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "232", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/10.ics", "body_bytes": 232, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:47:53 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1070"}, "body": "\n\n\n /caldav/calendars/public/10.ics\n \n \n \"e6fa695514466881\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T144753Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEXDATE;TZID=Europe/London:20260508T140000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 1070, "body_truncated": false}} {"ts": "2026-03-30T14:47:53+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:47:53 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6130"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"53fb93409a868c3b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"15e21dd53bfeddfc\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:47:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-users&as=admin", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:47:58 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T14:47:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:47:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "10580"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"ui", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:48:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "9409"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:48:01+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:01 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5698"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"custom\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-06T1", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:48:22+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:22 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6130"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"55da5569707995bb\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"527d6e363f17bcfa\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:48:22+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "655", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/10.ics/caldav/calendars/public/9.ics/caldav/calendars/public/8.ics/caldav/calendars/public/7.ics/caldav/calendars/public/6.ics/caldav/calendars/public/5.ics/caldav/calendars/public/4.ics/caldav/calendars/public/3.ics/caldav/calendars/public/2.ics/caldav/calendars/public/1.ics", "body_bytes": 655, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:22 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "8815"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"55da5569707995bb\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T144822Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"527d6e363f17bcfa\"\n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:48:32+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/7.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14137", "If-Match": "\"df74a2a1b310e407\"", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:32 GMT", "ETag": "\"b18f9e3c652a40d4\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T14:48:32+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "231", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/7.ics", "body_bytes": 231, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:32 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1069"}, "body": "\n\n\n /caldav/calendars/public/7.ics\n \n \n \"b18f9e3c652a40d4\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-007@calendar-wp-plugin\r\nDTSTAMP:20260330T144832Z\r\nSUMMARY:Fortnightly Coaching\r\nDESCRIPTION:Coaching check-in.\r\nLOCATION:Online\r\nCATEGORIES:Training\r\nDTSTART;TZID=Europe/London:20260407T150000\r\nDTEND;TZID=Europe/London:20260407T160000\r\nRRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20260731T235959\r\nEXDATE;TZID=Europe/London:20260519T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 1069, "body_truncated": false}} {"ts": "2026-03-30T14:48:32+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://localhost:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:32 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6130"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"55da5569707995bb\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"527d6e363f17bcfa\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T14:48:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-users&as=admin", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:37 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T14:48:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "10580"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"916c9cd30540959ad63f@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"ui", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T14:48:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/favicon.ico", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "image/avif,image/jxl,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Referer": "http://localhost:8080/calendar", "Sec-Fetch-Dest": "image", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=6", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T14:48:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "9409"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:48:41+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:48:41 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6050"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T14:49:47+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", "Priority": "u=0, i"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:49:47 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"bca3fc6eaa239803\"", "Content-Length": "5115"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T144947Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T144947Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T144947Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T144947Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T14:50:56+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/calendar, application/ics, text/plain;q=0.9", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:50:56 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"584d529babd5cae6\"", "Content-Length": "5115"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T145056Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T145056Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T145056Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T145056Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T14:50:56+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/calendar.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "314", "Depth": "0", "Origin": "http://localhost:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 314, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:50:56 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T14:50:56+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/.well-known/caldav", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "314", "Depth": "0", "Origin": "http://localhost:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 314, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:50:56 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T14:50:56+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "314", "Depth": "0", "Origin": "http://localhost:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 314, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:50:56 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T14:50:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/calendar,text/plain;q=0.8,*/*;q=0.5", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "none", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 14:50:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"c047ccb96f0fbd50\"", "Content-Length": "5115"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T145059Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T145059Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T145059Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T145059Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"49da7b660d2eb90b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:20:48+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"14f25", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"76e9509bbd366af2\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"49da7b660d2eb90b\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"fa44a32e2b54fe98\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "ETag": "\"4740b3cc34a2cc56\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"4740b3cc34a2cc56\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "ETag": "\"2be1c63715d4fd1d\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"2be1c63715d4fd1d\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "ETag": "\"cfd13b1114a34fa6\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"cfd13b1114a34fa6\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "ETag": "\"67d3e29da97d3248\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"67d3e29da97d3248\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 15, \"uid\": \"fd51d305728f2287d9eb@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"15832d093f3d58d8\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:21:37+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/15/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/15.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"0dd759e3487894b3\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fd51d305728f2287d9eb@calendar-wp-plugin\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"bad9b0a4bf071e1cf316@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"0bf138cc955a676d\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:21:37+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"bad9b0a4bf071e1cf316@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"bad9b0a4bf071e1cf316@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"bad9b0a4bf071e1cf316@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"bad9b0a4bf071e1cf316@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"bad9b0a4bf071e1cf316@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"bad9b0a4bf071e1cf316@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"bad9b0a4bf071e1cf316@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"bad9b0a4bf071e1cf316@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "ETag": "\"ccabcbefa3ae427d\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11006"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"49da7b660d2eb90b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:20:48+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"14f25", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "ETag": "\"ecce7dcc33a5384e\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"ecce7dcc33a5384e\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T152137Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11634"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"49da7b660d2eb90b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:20:48+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"14f25", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:21:37+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:37 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T15:21:38+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:21:38 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T15:44:42+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:44:42 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11634"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"49da7b660d2eb90b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:20:48+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"14f25", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:44:42+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:44:42 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"ec592f4817d711b6\"", "Content-Length": "5319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154442Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T154442Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T154442Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154442Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T15:44:42+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:44:42 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"49da7b660d2eb90b\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154442Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T15:44:42+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:44:42 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"fa44a32e2b54fe98\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154442Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T15:44:42+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 409, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:44:42 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "84"}, "body": "{\"error\": {\"code\": \"conflict_error\", \"message\": \"occurrence already has exception\"}}", "body_bytes": 84, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"4cd72d479d507116\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:56+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"402be", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"0a0ab4f2ca5feab6\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"4cd72d479d507116\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"318ecd47574f78e8\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "ETag": "\"d846dc38796f779e\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"d846dc38796f779e\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "ETag": "\"c80614f78133f2b1\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"c80614f78133f2b1\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "ETag": "\"40fb6f8f93bddee4\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"40fb6f8f93bddee4\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "ETag": "\"e437395a7324b090\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e437395a7324b090\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 15, \"uid\": \"89ac5e3af1c07027b9b8@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"2ca833fe353a18f5\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:58+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/15/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/15.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"ce147ab01d399c28\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:89ac5e3af1c07027b9b8@calendar-wp-plugin\r\nDTSTAMP:20260330T154558Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"4d11fce48beae092f87b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"dda7eb88fc839463\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:58+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"4d11fce48beae092f87b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"4d11fce48beae092f87b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"4d11fce48beae092f87b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"4d11fce48beae092f87b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/16/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 16, \"uid\": \"4d11fce48beae092f87b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"4d11fce48beae092f87b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"4d11fce48beae092f87b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 16, \"uid\": \"4d11fce48beae092f87b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "ETag": "\"81bd198374822883\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11006"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"4cd72d479d507116\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:56+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"402be", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "ETag": "\"c920974d8ef1116c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"c920974d8ef1116c\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11634"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"4cd72d479d507116\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:56+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"402be", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11634"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"4cd72d479d507116\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:56+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"402be", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"18a0ba0a5476aa53\"", "Content-Length": "5319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"4cd72d479d507116\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"318ecd47574f78e8\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "ETag": "\"fe2e1195eb2a1dfe\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"fe2e1195eb2a1dfe\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "ETag": "\"f9b9356a1517a241\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"f9b9356a1517a241\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "ETag": "\"f36d586abbe055b0\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"f36d586abbe055b0\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "ETag": "\"2bc1acbc670b28f9\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"2bc1acbc670b28f9\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 19, \"uid\": \"b397f1a2bd1d27bd909e@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"5cbce152b812cece\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:59+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/19/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/19.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"0a27b46fe6ea00d7\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:b397f1a2bd1d27bd909e@calendar-wp-plugin\r\nDTSTAMP:20260330T154559Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 20, \"uid\": \"42cf8591d4bbfc538331@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"58df47550d8b8d1e\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:59+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/20/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/20/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 20, \"uid\": \"42cf8591d4bbfc538331@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 20, \"uid\": \"42cf8591d4bbfc538331@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 20, \"uid\": \"42cf8591d4bbfc538331@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 20, \"uid\": \"42cf8591d4bbfc538331@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/20/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/20/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 20, \"uid\": \"42cf8591d4bbfc538331@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 20, \"uid\": \"42cf8591d4bbfc538331@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 20, \"uid\": \"42cf8591d4bbfc538331@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 20, \"uid\": \"42cf8591d4bbfc538331@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "ETag": "\"aba0878b20403f58\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12946"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"4cd72d479d507116\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:56+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"402be", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:45:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:45:59 GMT", "ETag": "\"27e69cf4e5e13efe\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:46:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:46:00 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"27e69cf4e5e13efe\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T154600Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T15:46:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:46:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12946"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"4cd72d479d507116\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:45:56+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"402be", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:46:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:46:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 18, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T15:46:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:46:00 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T15:48:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"5e82b8a608ec2f69\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:22+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"9e96e", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:48:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:25 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"9f62fea5ac3aa027\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154825Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T154825Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T154825Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154825Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T15:48:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:25 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5e82b8a608ec2f69\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154825Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T15:48:25+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:25 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"ed65e21db7fdf5b1\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154825Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T15:48:25+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:25 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:25+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"3256d792f303942ee5ec@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"05e6f17954013126\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:25+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T15:48:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"3256d792f303942ee5ec@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"3256d792f303942ee5ec@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"3256d792f303942ee5ec@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T15:48:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"732ad7c020d51395\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:37+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"996ea", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:48:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"84d45e72b4e73efa\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154839Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T154839Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T154839Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154839Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T15:48:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"732ad7c020d51395\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154839Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T15:48:39+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:39 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"a7862a0f1a83e217\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154839Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T15:48:39+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:39 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:39+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"54b5dbcbbac70e6b80a0@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"d62c926281c67f37\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:39+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"54b5dbcbbac70e6b80a0@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"54b5dbcbbac70e6b80a0@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"54b5dbcbbac70e6b80a0@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"54b5dbcbbac70e6b80a0@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"54b5dbcbbac70e6b80a0@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "ETag": "\"03110b46b4736657\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"03110b46b4736657\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T154840Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "ETag": "\"b1d8098f2c401ca5\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"b1d8098f2c401ca5\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T154840Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "ETag": "\"e35466e93feda311\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e35466e93feda311\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T154840Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "ETag": "\"ca53342667463a28\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"ca53342667463a28\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T154840Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"c497eb71f64543b5c7e6@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"ee105eed23956cc3\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:40+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"1efae4799ce0bd1e\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:c497eb71f64543b5c7e6@calendar-wp-plugin\r\nDTSTAMP:20260330T154840Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 17, \"uid\": \"22636e248d3c1a08f8a3@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"c92a15baad77b616\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:40+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"22636e248d3c1a08f8a3@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"22636e248d3c1a08f8a3@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"22636e248d3c1a08f8a3@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"22636e248d3c1a08f8a3@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"22636e248d3c1a08f8a3@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"22636e248d3c1a08f8a3@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"22636e248d3c1a08f8a3@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"22636e248d3c1a08f8a3@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "ETag": "\"1075b85ca18a439c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11645"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"732ad7c020d51395\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:37+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"996ea", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "ETag": "\"a580ff422270d850\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"a580ff422270d850\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T154840Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"732ad7c020d51395\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:37+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"996ea", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T15:48:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:40 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"e6a46365a4181790\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:57+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"d80b6", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e80ad55b0cf34f87\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e6a46365a4181790\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"3d214f4f81cae67d\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"b1d82373467e236cc487@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"f1958b4788675043\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:59+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"b1d82373467e236cc487@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"b1d82373467e236cc487@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"b1d82373467e236cc487@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"b1d82373467e236cc487@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"b1d82373467e236cc487@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "ETag": "\"5f98042911cdc2aa\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5f98042911cdc2aa\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "ETag": "\"3eb343a6df4e1f4a\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3eb343a6df4e1f4a\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "ETag": "\"8eaecebe6704179d\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"8eaecebe6704179d\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "ETag": "\"1b74dcc0ab5f571c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"1b74dcc0ab5f571c\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T154859Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T15:48:59+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:48:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"aaa8340a3d7ccd6a8df7@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"d7f9a72c4aaad948\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:59+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"058abb73473f9ec4\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:aaa8340a3d7ccd6a8df7@calendar-wp-plugin\r\nDTSTAMP:20260330T154900Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 17, \"uid\": \"6570fd6aeace58578ae1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"29e14a872aca1250\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:49:00+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"6570fd6aeace58578ae1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6570fd6aeace58578ae1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6570fd6aeace58578ae1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6570fd6aeace58578ae1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"6570fd6aeace58578ae1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6570fd6aeace58578ae1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6570fd6aeace58578ae1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6570fd6aeace58578ae1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "ETag": "\"031e00c7b2437a31\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11645"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"e6a46365a4181790\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:57+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"d80b6", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "ETag": "\"e715872930057161\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e715872930057161\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T154900Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"e6a46365a4181790\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:48:57+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"d80b6", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T15:49:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:49:00 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a7b4a62ce837068b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:54:56+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"3d75a", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"48ac2dd451d7868f\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"a7b4a62ce837068b\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"ab57181d2c00fcd5\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"d9d622c02ebfdbf83dab@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"cbd5aab08f2de7f2\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:54:59+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"d9d622c02ebfdbf83dab@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"d9d622c02ebfdbf83dab@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"d9d622c02ebfdbf83dab@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"d9d622c02ebfdbf83dab@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"d9d622c02ebfdbf83dab@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "ETag": "\"a11c28068216c2d6\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"a11c28068216c2d6\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "ETag": "\"d96489542d0c9095\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"d96489542d0c9095\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "ETag": "\"6e95caf3538b8583\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"6e95caf3538b8583\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "ETag": "\"bf238a72a05154c6\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"bf238a72a05154c6\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"84911fe28ff2f9fbdb45@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"54261a0506aa9388\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:54:59+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"26ffe89dee62df60\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:84911fe28ff2f9fbdb45@calendar-wp-plugin\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 17, \"uid\": \"8af4eae9f0c214d146d5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"7bc1ad808fbfd5fd\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:54:59+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"8af4eae9f0c214d146d5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"8af4eae9f0c214d146d5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"8af4eae9f0c214d146d5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"8af4eae9f0c214d146d5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"8af4eae9f0c214d146d5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"8af4eae9f0c214d146d5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"8af4eae9f0c214d146d5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"8af4eae9f0c214d146d5@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "ETag": "\"fe95f3bc4c2e74e1\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11645"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a7b4a62ce837068b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:54:56+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"3d75a", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "ETag": "\"0bbc85496d9bb64a\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:54:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:54:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"0bbc85496d9bb64a\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T155459Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T15:55:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:55:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a7b4a62ce837068b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:54:56+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"3d75a", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:55:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:55:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T15:55:00+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:55:00 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a7bc6e565475a9a8\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:56:42+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"0388f", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"75c7a06e3f9dde8c\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"a7bc6e565475a9a8\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"dba8ac559404c969\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"c5a0ca5d685c8908a802@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"01c1e859a0c1d3ee\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:56:45+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"c5a0ca5d685c8908a802@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"c5a0ca5d685c8908a802@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"c5a0ca5d685c8908a802@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"c5a0ca5d685c8908a802@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"c5a0ca5d685c8908a802@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "ETag": "\"e2be2b99c39985f7\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e2be2b99c39985f7\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "ETag": "\"a380dceb2ca70302\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"a380dceb2ca70302\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "ETag": "\"62cfa347f4a3e87c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"62cfa347f4a3e87c\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "ETag": "\"3e18aabb2c471d1b\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3e18aabb2c471d1b\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"21ed32483f6fe0854775@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"e195c8c718c74ea2\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:56:45+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5aeda0097db3158a\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:21ed32483f6fe0854775@calendar-wp-plugin\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 17, \"uid\": \"ff4ad7f18ee79cf13356@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"107f90ee4fdcd3da\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:56:45+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"ff4ad7f18ee79cf13356@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"ff4ad7f18ee79cf13356@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"ff4ad7f18ee79cf13356@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"ff4ad7f18ee79cf13356@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"ff4ad7f18ee79cf13356@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"ff4ad7f18ee79cf13356@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"ff4ad7f18ee79cf13356@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"ff4ad7f18ee79cf13356@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "ETag": "\"25be1f0412a1607c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11645"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a7bc6e565475a9a8\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:56:42+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"0388f", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "ETag": "\"b4d712a7912ed997\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"b4d712a7912ed997\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T155645Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a7bc6e565475a9a8\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T15:56:42+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"0388f", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T15:56:45+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 15:56:45 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"50884b9c7f52d7b4\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T16:00:11+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"9cc94", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"1d9cf2007a92fe76\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"50884b9c7f52d7b4\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"d227b3c11080654f\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"76660280451647fdf0ba@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"8bbc978d26a619c8\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T16:00:13+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"76660280451647fdf0ba@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"76660280451647fdf0ba@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"76660280451647fdf0ba@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"76660280451647fdf0ba@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"76660280451647fdf0ba@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "ETag": "\"5e3a16a0bd9129c8\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5e3a16a0bd9129c8\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "ETag": "\"cc6a3dc3e8885595\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"cc6a3dc3e8885595\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "ETag": "\"39ef190e9e85067e\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"39ef190e9e85067e\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "ETag": "\"57c287b65a632230\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"57c287b65a632230\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"0609308738390cd66d4c@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"71eca1563d48f3ec\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T16:00:13+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"614335fbe22791d5\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:0609308738390cd66d4c@calendar-wp-plugin\r\nDTSTAMP:20260330T160013Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 17, \"uid\": \"6bf853766043d7c101b6@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"406094a1e9d195af\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T16:00:13+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"6bf853766043d7c101b6@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6bf853766043d7c101b6@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6bf853766043d7c101b6@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6bf853766043d7c101b6@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"6bf853766043d7c101b6@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6bf853766043d7c101b6@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6bf853766043d7c101b6@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"6bf853766043d7c101b6@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "ETag": "\"0afcaa4cdff054dd\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11645"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"50884b9c7f52d7b4\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T16:00:11+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"9cc94", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T16:00:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:00:14+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:14 GMT", "ETag": "\"16f6332f4cb07a1b\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:00:14+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:14 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"16f6332f4cb07a1b\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T160014Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T16:00:14+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:14 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"50884b9c7f52d7b4\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T16:00:11+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"9cc94", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T16:00:14+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:14 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T16:00:14+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:00:14 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T16:01:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", "Priority": "u=0, i"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:01:58 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T16:01:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:01:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "51"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"month\"}}", "body_bytes": 51, "body_truncated": false}} {"ts": "2026-03-30T16:02:01+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:01 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "7109"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:02:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-05-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4034"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-01T14:00:00+01:00\", \"occurrence_end\": \"2026-05-01T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"occurrence_start\": \"2026-05-04T00:00:00+00:00\", \"occurrence_end\": \"2026-05-05T00:00:00+00:00\", \"repeat_type\": \"none\"}, {\"event_id\": 7, \"uid\": \"fixture-ce-007@calendar-wp-plugin\", \"title\": \"Fortnightly Coaching\", \"description\": \"Coaching check-in.\", \"location\": \"Online\", \"category\": \"Training\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-05T15:00:00+01:00\", \"occurrence_end\": \"2026-05-05T16:00:00+01:00\", \"repeat_type\": \"custom\"}, {\"event_id\": 4, \"uid\": \"fixture-ce-004@calendar-wp-plugin\", \"title\": \"Community Lunch\", \"description\": \"Weekly community lunch.\", \"location\": \"Cafeteria\", \"category\": \"Community\", \"all_day_event\": false, \"", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:02:04+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:04 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "7109"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:02:15+00:00", "client": "127.0.0.1", "method": "GET", "path": "/admin.php?as=admin", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", "Sec-Fetch-User": "?1", "Priority": "u=0, i"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:15 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "7183"}, "body": "[omitted html payload: 3935 bytes]", "body_bytes": 3935, "body_truncated": true}} {"ts": "2026-03-30T16:02:17+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-admin/admin.php?page=calendar-diagnostics&as=admin", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Referer": "http://localhost:8080/admin.php?as=admin", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:17 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "8898"}, "body": "[omitted html payload: 3935 bytes]", "body_bytes": 3935, "body_truncated": true}} {"ts": "2026-03-30T16:02:17+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/admin/diagnostics?limit=20&as=admin", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-diagnostics&as=admin", "Content-Type": "application/json", "X-WP-User": "admin", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:17 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "28256"}, "body": "{\"data\": [{\"ts\": \"2026-03-30T16:00:13+00:00\", \"client\": \"127.0.0.1\", \"method\": \"POST\", \"path\": \"/wp-json/calendar/v1/events\", \"request\": {\"headers\": {\"Host\": \"127.0.0.1:8080\", \"User-Agent\": \"curl/8.14.1\", \"Accept\": \"*/*\", \"Content-Type\": \"application/json\", \"X-WP-User\": \"admin\", \"Content-Length\": \"295\"}, \"body\": \"{\\\"title\\\": \\\"Smoke Daily Exception TZ\\\", \\\"description\\\": \\\"tz-key\\\", \\\"location\\\": \\\"\\\", \\\"category\\\": \\\"\\\", \\\"all_day_event\\\": false, \\\"start_datetime\\\": \\\"2026-03-02T10:00:00+00:00\\\", \\\"end_datetime\\\": \\\"2026-03-02T11:00:00+00:00\\\", \\\"repeat_type\\\": \\\"daily\\\", \\\"repeat_interval\\\": 1, \\\"repeat_range_mode\\\": \\\"until\\\", \\\"repeat_until\\\": \\\"2026-03-19\\\"}\", \"body_bytes\": 295, \"body_truncated\": false}, \"response\": {\"status\": 201, \"headers\": {\"Server\": \"CalendarFixture/0.1 Python/3.13.5\", \"Date\": \"Mon, 30 Mar 2026 16:00:13 GMT\", \"Content-Type\": \"application/json; charset=utf-8\", \"Content-Length\": \"655\"}, \"body\": \"{\\\"data\\\": {\\\"id\\\": 17, \\\"uid\\\": \\\"6bf853766043d7c101b6@calendar-wp-plugin\\\", \\\"title\\\": \\\"Smoke Daily Exception TZ\\\", \\\"description\\\": \\\"tz-key\\\", \\\"location\\\": \\\"\\\", \\\"category\\\": \\\"\\\", \\\"all_day_event\\\": false, \\\"start_datetime\\\": \\\"2026-03-02T10:00:00+00:00\\\", \\\"", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T16:02:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-admin/admin.php?page=calendar-users&as=admin", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-diagnostics&as=admin", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:24 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "9478"}, "body": "[omitted html payload: 3935 bytes]", "body_bytes": 3935, "body_truncated": true}} {"ts": "2026-03-30T16:02:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/admin/users?as=admin", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-users&as=admin", "Content-Type": "application/json", "X-WP-User": "admin", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "527"}, "body": "{\"data\": [{\"id\": 1, \"email\": \"rw_user@example.test\", \"email_verified_at\": \"2026-03-30T16:01:41+00:00\", \"account_status\": \"active\", \"updated_at\": \"2026-03-30T16:01:41+00:00\"}, {\"id\": 2, \"email\": \"adrians@chezstephens.org.uk\", \"email_verified_at\": \"2026-03-30T16:01:41+00:00\", \"account_status\": \"active\", \"updated_at\": \"2026-03-30T16:01:41+00:00\"}, {\"id\": 3, \"email\": \"pending_user@example.test\", \"email_verified_at\": \"2026-03-30T16:01:41+00:00\", \"account_status\": \"pending_approval\", \"updated_at\": \"2026-03-30T16:01:41+00:00\"}]}", "body_bytes": 527, "body_truncated": false}} {"ts": "2026-03-30T16:02:28+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-users&as=admin", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:28 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T16:02:28+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:02:28 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "51"}, "body": "{\"data\": [], \"meta\": {\"count\": 0, \"view\": \"month\"}}", "body_bytes": 51, "body_truncated": false}} {"ts": "2026-03-30T16:03:20+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/calendar, application/ics, text/plain;q=0.9", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:20 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:20+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "203", "Depth": "0", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 203, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:20 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:20+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "314", "Depth": "0", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 314, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:20 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/calendar, application/ics, text/plain;q=0.9", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:25 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:25+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "314", "Depth": "0", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 314, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:25 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/calendar, application/ics, text/plain;q=0.9", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache", "Authorization": "***"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:25 GMT", "Content-Type": "text/plain; charset=utf-8", "Content-Length": "30"}, "body": "caldav shared public calendar\n", "body_bytes": 30, "body_truncated": false}} {"ts": "2026-03-30T16:03:25+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "314", "Depth": "0", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache", "Authorization": "***"}, "body": "\n", "body_bytes": 314, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:25 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "431"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 431, "body_truncated": false}} {"ts": "2026-03-30T16:03:25+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "203", "Depth": "0", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 203, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:25 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:25+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/principals/user/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "158", "Depth": "0", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 158, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:25 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:25+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "203", "Depth": "0", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache", "Authorization": "***"}, "body": "\n", "body_bytes": 203, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:25 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "431"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 431, "body_truncated": false}} {"ts": "2026-03-30T16:03:26+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/principals/user/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "158", "Depth": "0", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache", "Authorization": "***"}, "body": "\n", "body_bytes": 158, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:26 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "445"}, "body": "\n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 445, "body_truncated": false}} {"ts": "2026-03-30T16:03:26+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "217", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 217, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:26 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:26+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "215", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 215, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:26 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:26+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "215", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache", "Authorization": "***"}, "body": "\n", "body_bytes": 215, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:26 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "728"}, "body": "\n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 728, "body_truncated": false}} {"ts": "2026-03-30T16:03:26+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "217", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache", "Authorization": "***"}, "body": "\n", "body_bytes": 217, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:26 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1348"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n", "body_bytes": 337, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:28 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:28+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "337", "Depth": "0", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache", "Authorization": "***"}, "body": "\n", "body_bytes": 337, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:28 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "509"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 509, "body_truncated": false}} {"ts": "2026-03-30T16:03:28+00:00", "client": "127.0.0.1", "method": "OPTIONS", "path": "/caldav/calendars/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:28 GMT", "DAV": "1, 2, calendar-access", "Allow": "OPTIONS, PROPFIND, REPORT, GET, PUT, DELETE"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:28+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:28 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "3570"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"7afd6bfad476334a\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"bd549a6776fb7591\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3570, "body_truncated": false}} {"ts": "2026-03-30T16:03:28+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "655", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/10.ics/caldav/calendars/public/9.ics/caldav/calendars/public/8.ics/caldav/calendars/public/7.ics/caldav/calendars/public/6.ics/caldav/calendars/public/5.ics/caldav/calendars/public/4.ics/caldav/calendars/public/3.ics/caldav/calendars/public/2.ics/caldav/calendars/public/1.ics", "body_bytes": 655, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:28 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "8815"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"7afd6bfad476334a\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T160328Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"bd549a6776fb7591\"\n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T16:03:43+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/3.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14098", "If-Match": "\"39d8705698ac45a3\"", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:43 GMT", "ETag": "\"1b040a223eb85dbe\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:43+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "231", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/3.ics", "body_bytes": 231, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1030"}, "body": "\n\n\n /caldav/calendars/public/3.ics\n \n \n \"1b040a223eb85dbe\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T160343Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEXDATE;TZID=Europe/London:20260414T090000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 1030, "body_truncated": false}} {"ts": "2026-03-30T16:03:43+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "3570"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"7afd6bfad476334a\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"bd549a6776fb7591\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3570, "body_truncated": false}} {"ts": "2026-03-30T16:03:50+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/4.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "14108", "If-Match": "\"195229643e51b679\"", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "BEGIN:VCALENDAR\r\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/London\r\nX-TZINFO:Europe/London[2025b]\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:-000115\r\nTZNAME:Europe/London(STD)\r\nDTSTART:18471201T000000\r\nRDATE:18471201T000000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19160521T020000\r\nRDATE:19160521T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19161001T030000\r\nRDATE:19161001T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19170408T020000\r\nRDATE:19170408T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19170917T030000\r\nRDATE:19170917T030000\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETTO:+010000\r\nTZOFFSETFROM:+000000\r\nTZNAME:Europe/London(DST)\r\nDTSTART:19180324T020000\r\nRDATE:19180324T020000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETTO:+000000\r\nTZOFFSETFROM:+010000\r\nTZNAME:Europe/London(STD)\r\nDTSTART:19180930T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929 ...(truncated)", "body_bytes": 4097, "body_truncated": true}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:50 GMT", "ETag": "\"2c3b4b86c7b93404\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:03:50+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "231", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/4.ics", "body_bytes": 231, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:50 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1040"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"2c3b4b86c7b93404\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T160350Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260422T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 1040, "body_truncated": false}} {"ts": "2026-03-30T16:03:51+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:51 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "3570"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"7afd6bfad476334a\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"bd549a6776fb7591\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3570, "body_truncated": false}} {"ts": "2026-03-30T16:03:56+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:03:56 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6476"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:04:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/users/me", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "Authorization": "***", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:04:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "137"}, "body": "{\"data\": {\"id\": 2, \"email\": \"adrians@chezstephens.org.uk\", \"account_status\": \"active\", \"email_verified_at\": \"2026-03-30T16:01:41+00:00\"}}", "body_bytes": 137, "body_truncated": false}} {"ts": "2026-03-30T16:04:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:04:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6476"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:05:01+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/10", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "Authorization": "***", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:05:01 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "686"}, "body": "{\"data\": {\"id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"start_datetime\": \"2026-04-03T14:00:00+01:00\", \"end_datetime\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 8, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"2972ba81ca1c2300\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T16:01:41+00:00\"}}", "body_bytes": 686, "body_truncated": false}} {"ts": "2026-03-30T16:05:07+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/10/occurrences?from=2026-04-01&months=3", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "Authorization": "***", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:05:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "2794"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-10T14:00:00+01:00\", \"occurrence_end\": \"2026-04-10T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-17T14:00:00+01:00\", \"occurrence_end\": \"2026-04-17T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete excepti ...(truncated)", "body_bytes": 2794, "body_truncated": false}} {"ts": "2026-03-30T16:05:11+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14%3A00%3A00%2B01%3A00", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "Content-Type": "application/json", "Authorization": "***", "Origin": "http://localhost:8080", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=0"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:05:11 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T16:05:11+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/10/occurrences?from=2026-04-01&months=3", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "Authorization": "***", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:05:11 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "2446"}, "body": "{\"data\": [{\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-10T14:00:00+01:00\", \"occurrence_end\": \"2026-04-10T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-24T14:00:00+01:00\", \"occurrence_end\": \"2026-04-24T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete excepti ...(truncated)", "body_bytes": 2446, "body_truncated": false}} {"ts": "2026-03-30T16:05:11+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-04-01", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:05:11 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6128"}, "body": "{\"data\": [{\"event_id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\"}, {\"event_id\": 10, \"uid\": \"fixture-ce-010@calendar-wp-plugin\", \"title\": \"Therapy Session\", \"description\": \"Used for single-occurrence delete exception tests.\", \"location\": \"Clinic\", \"category\": \"Health\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T14:00:00+01:00\", \"occurrence_end\": \"2026-04-03T15:00:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-06T09:00:00+01:00\", \"occurrence_end\": \"2026-04-06T09:15:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 3, \"uid\": \"fixture-ce-003@calendar-wp-plugin\", \"title\": \"Daily Standup\", \"description\": \"15 minute sync.\", \"location\": \"Online\", \"category\": \"Team\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T16:33:31+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:33:31 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "3570"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"7afd6bfad476334a\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"bd549a6776fb7591\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3570, "body_truncated": false}} {"ts": "2026-03-30T16:33:31+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "232", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/10.ics", "body_bytes": 232, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 16:33:31 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1070"}, "body": "\n\n\n /caldav/calendars/public/10.ics\n \n \n \"41b7bbfae11cdaad\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-010@calendar-wp-plugin\r\nDTSTAMP:20260330T163331Z\r\nSUMMARY:Therapy Session\r\nDESCRIPTION:Used for single-occurrence delete exception tests.\r\nLOCATION:Clinic\r\nCATEGORIES:Health\r\nDTSTART;TZID=Europe/London:20260403T140000\r\nDTEND;TZID=Europe/London:20260403T150000\r\nRRULE:FREQ=WEEKLY;COUNT=8\r\nEXDATE;TZID=Europe/London:20260417T140000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 1070, "body_truncated": false}} {"ts": "2026-03-30T17:03:35+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:03:35 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "3570"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"7afd6bfad476334a\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"bd549a6776fb7591\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3570, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"b382c678635b840b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:29:00+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"1d2c2", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"bb575c8c2154be15\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T172902Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T172902Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T172902Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T172902Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"b382c678635b840b\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T172902Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"5e18ae38222b91d2\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T172902Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"00c5f32762e8c0b85a1c@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"c7092bf3eb675ef3\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:29:02+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"00c5f32762e8c0b85a1c@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"00c5f32762e8c0b85a1c@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"00c5f32762e8c0b85a1c@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"00c5f32762e8c0b85a1c@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"00c5f32762e8c0b85a1c@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "ETag": "\"2105e046d5fa798f\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"2105e046d5fa798f\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T172902Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "ETag": "\"c13600e6f9aee896\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"c13600e6f9aee896\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T172902Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "ETag": "\"685db0d2f5593d0b\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:02 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"685db0d2f5593d0b\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T172902Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "ETag": "\"5ed4a7bad55cd265\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5ed4a7bad55cd265\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T172903Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"2ea801a45310bab83a50@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"cec610533c64bc27\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:29:03+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"c02269cb3a8e8d71\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:2ea801a45310bab83a50@calendar-wp-plugin\r\nDTSTAMP:20260330T172903Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 17, \"uid\": \"371b0caae432edbf9a59@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"f28f7a5c7c266a7e\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:29:03+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"371b0caae432edbf9a59@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"371b0caae432edbf9a59@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"371b0caae432edbf9a59@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"371b0caae432edbf9a59@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"371b0caae432edbf9a59@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"371b0caae432edbf9a59@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"371b0caae432edbf9a59@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"371b0caae432edbf9a59@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "ETag": "\"e70d8316450066f2\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11645"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"b382c678635b840b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:29:00+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"1d2c2", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "ETag": "\"159009a65264b9e1\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"159009a65264b9e1\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T172903Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"b382c678635b840b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:29:00+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"1d2c2", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T17:29:03+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:29:03 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"465df57ed39797a5\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:30:33+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"651ef", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"4be039fb110f13fc\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T173035Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T173035Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T173035Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T173035Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"465df57ed39797a5\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T173035Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"2c12143b41cf6e99\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T173035Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"d90ef129e8487aac2a02@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"3b5c92f57b27a7e7\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:30:35+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"d90ef129e8487aac2a02@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"d90ef129e8487aac2a02@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"d90ef129e8487aac2a02@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"d90ef129e8487aac2a02@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"d90ef129e8487aac2a02@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "ETag": "\"48303f38375ccfe9\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"48303f38375ccfe9\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T173036Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "ETag": "\"0a5f4111009ba192\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"0a5f4111009ba192\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T173036Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "ETag": "\"7802f78bb8d6e8f3\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"7802f78bb8d6e8f3\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T173036Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "ETag": "\"4e08622f0a349692\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"4e08622f0a349692\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T173036Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"f7dee92cb08d5885ad53@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"f74a13c50da08642\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:30:36+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"d7729a08966aa16f\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:f7dee92cb08d5885ad53@calendar-wp-plugin\r\nDTSTAMP:20260330T173036Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 17, \"uid\": \"47420837950da56232ab@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"bbadcd70ff645ca1\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:30:36+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"47420837950da56232ab@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"47420837950da56232ab@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"47420837950da56232ab@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"47420837950da56232ab@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"47420837950da56232ab@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"47420837950da56232ab@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"47420837950da56232ab@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"47420837950da56232ab@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "ETag": "\"e5bd42e8bfd1b0d1\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11645"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"465df57ed39797a5\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:30:33+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"651ef", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "ETag": "\"d3ca454bd41251d6\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"d3ca454bd41251d6\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T173036Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"465df57ed39797a5\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:30:33+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"651ef", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T17:30:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:30:36 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T17:33:35+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:33:35 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6437"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"465df57ed39797a5\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"651ef0024e9c7082\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T17:33:35+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "1191", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/smoke-cancelled-occurrence.ics/caldav/calendars/public/smoke-exdate-import.ics/caldav/calendars/public/17.ics/caldav/calendars/public/16.ics/caldav/calendars/public/smoke-monthly-last.ics/caldav/calendars/public/smoke-monthly-ordinal.ics/caldav/calendars/public/smoke-monthly-nth.ics/caldav/calendars/public/smoke-vtimezone.ics/caldav/calendars/public/11.ics/caldav/calendars/public/10.ics/caldav/calendars/public/9.ics/caldav/calendars/public/8.ics/caldav/calendars/public/7.ics/caldav/calendars/public/6.ics/caldav/calendars/public/5.ics/caldav/calendars/public/4.ics/caldav/calendars/public/3.ics/caldav/calendars/public/2.ics/caldav/calendars/public/1.ics", "body_bytes": 1191, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:33:35 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "16545"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"465df57ed39797a5\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T173335Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"651ef0024e9c7082\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"f7ad3938cf996256\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:38:32+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"1c535", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"d8126b67df01f0e2\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T173834Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T173834Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T173834Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T173834Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"f7ad3938cf996256\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T173834Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"4a24c041bfbc3ec2\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T173834Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"3c9e7cfeb04a4a52d8d6@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"ac348cbf9c8977b5\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:38:34+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"3c9e7cfeb04a4a52d8d6@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"3c9e7cfeb04a4a52d8d6@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"3c9e7cfeb04a4a52d8d6@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"3c9e7cfeb04a4a52d8d6@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"3c9e7cfeb04a4a52d8d6@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "ETag": "\"1506481eda0c5763\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"1506481eda0c5763\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T173834Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "ETag": "\"cb739417b1b3a094\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"cb739417b1b3a094\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T173834Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "ETag": "\"44d87bb8dd04cf86\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:34+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:34 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"44d87bb8dd04cf86\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T173834Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "ETag": "\"9dd5cba7baa23fc5\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"9dd5cba7baa23fc5\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T173835Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"d682d215052e032021f3@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"62e14734e3ca22de\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:38:35+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"694b221e5c8ab44a\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:d682d215052e032021f3@calendar-wp-plugin\r\nDTSTAMP:20260330T173835Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 17, \"uid\": \"82cb03deb443fd591f6d@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"63022f41345a4800\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:38:35+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"82cb03deb443fd591f6d@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"82cb03deb443fd591f6d@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"82cb03deb443fd591f6d@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"82cb03deb443fd591f6d@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"82cb03deb443fd591f6d@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"82cb03deb443fd591f6d@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"82cb03deb443fd591f6d@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"82cb03deb443fd591f6d@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "ETag": "\"5bb55dd889f66154\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11645"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"f7ad3938cf996256\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:38:32+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"1c535", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "ETag": "\"05afd85905bfe8d9\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"05afd85905bfe8d9\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T173835Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"f7ad3938cf996256\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:38:32+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"1c535", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T17:38:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:38:35 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "6585"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"509f2bd7d2009ce8\"", "Content-Length": "3132"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3132, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 11, \"uid\": \"2ccb5f2076be62c35936@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"e6c9698e1085c76b\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:12+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"2ccb5f2076be62c35936@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"2ccb5f2076be62c35936@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"2ccb5f2076be62c35936@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/11/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/11/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 11, \"uid\": \"2ccb5f2076be62c35936@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 11, \"uid\": \"2ccb5f2076be62c35936@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "ETag": "\"ff359fb275c089c9\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"ff359fb275c089c9\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "ETag": "\"2764dba1363599bf\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"2764dba1363599bf\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "ETag": "\"dca2e1bdfd4a6703\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"dca2e1bdfd4a6703\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "ETag": "\"f7121f9cf89d5d41\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"f7121f9cf89d5d41\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 16, \"uid\": \"bafafa747a751cf525e1@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"8f8aa2c3e6011a47\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:12+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/16/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/16.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"57d6b2e2283725e0\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:bafafa747a751cf525e1@calendar-wp-plugin\r\nDTSTAMP:20260330T174012Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"38b30150be27a031\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:12+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/17/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/17/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "ETag": "\"5409204c5488ce37\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "11645"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T17:40:12+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:12 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T17:40:13+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:13 GMT", "ETag": "\"f3393675b839a951\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:13 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"f3393675b839a951\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T174013Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T17:40:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T17:40:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T17:40:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:13 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T17:40:13+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12273"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T17:40:13+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "66"}, "body": "{\"email\": \"sec-nodisclose@example.test\", \"password\": \"***\"}", "body_bytes": 66, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:13 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"data\": {\"user_id\": 4, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T17:40:14+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/forgot-password", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "39"}, "body": "{\"email\": \"adrians@chezstephens.org.uk\"}", "body_bytes": 39, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:14 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "70"}, "body": "{\"data\": {\"status\": \"ok\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 70, "body_truncated": false}} {"ts": "2026-03-30T17:40:14+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "62"}, "body": "{\"email\": \"sec-rate-1@example.test\", \"password\": \"***\"}", "body_bytes": 62, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:14 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"data\": {\"user_id\": 5, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T17:40:14+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "62"}, "body": "{\"email\": \"sec-rate-2@example.test\", \"password\": \"***\"}", "body_bytes": 62, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:14 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"data\": {\"user_id\": 6, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T17:40:14+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "62"}, "body": "{\"email\": \"sec-rate-3@example.test\", \"password\": \"***\"}", "body_bytes": 62, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:14 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"data\": {\"user_id\": 7, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T17:40:14+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "62"}, "body": "{\"email\": \"sec-rate-4@example.test\", \"password\": \"***\"}", "body_bytes": 62, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:14 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"data\": {\"user_id\": 8, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T17:40:15+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "62"}, "body": "{\"email\": \"sec-rate-5@example.test\", \"password\": \"***\"}", "body_bytes": 62, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:15 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"data\": {\"user_id\": 9, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T17:40:15+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "62"}, "body": "{\"email\": \"sec-rate-6@example.test\", \"password\": \"***\"}", "body_bytes": 62, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:15 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 10, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T17:40:15+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "62"}, "body": "{\"email\": \"sec-rate-7@example.test\", \"password\": \"***\"}", "body_bytes": 62, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:15 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 11, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T17:40:15+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "62"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 429, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:15 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"error\": {\"code\": \"rate_limited\", \"message\": \"Too many registration attempts. Try again later.\"}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T17:40:15+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/sec-1774892415.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Length": "201", "Content-Type": "application/x-www-form-urlencoded"}, "body": "[omitted non-text payload: 201 bytes, content-type=application/x-www-form-urlencoded]", "body_bytes": 201, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:15 GMT", "ETag": "\"3cc5e1cc73127fbf\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T17:40:15+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/sec-1774892415.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:15 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3cc5e1cc73127fbf\"", "Content-Length": "287"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:sec-smoke-uid@example.test\r\nDTSTAMP:20260330T174015Z\r\nSUMMARY:Security Smoke Event\r\nDTSTART;TZID=Europe/London:20260415T100000\r\nDTEND;TZID=Europe/London:20260415T110000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 287, "body_truncated": false}} {"ts": "2026-03-30T17:40:15+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/999999.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 17:40:15 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T18:03:41+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:03:41 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6756"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"eb53d018557c8fca\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"190a40db82a13a9b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T18:03:41+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "1251", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/sec-1774892415.ics/caldav/calendars/public/smoke-cancelled-occurrence.ics/caldav/calendars/public/smoke-exdate-import.ics/caldav/calendars/public/17.ics/caldav/calendars/public/16.ics/caldav/calendars/public/smoke-monthly-last.ics/caldav/calendars/public/smoke-monthly-ordinal.ics/caldav/calendars/public/smoke-monthly-nth.ics/caldav/calendars/public/smoke-vtimezone.ics/caldav/calendars/public/11.ics/caldav/calendars/public/10.ics/caldav/calendars/public/9.ics/caldav/calendars/public/8.ics/caldav/calendars/public/7.ics/caldav/calendars/public/6.ics/caldav/calendars/public/5.ics/caldav/calendars/public/4.ics/caldav/calendars/public/3.ics/caldav/calendars/public/2.ics/caldav/ca ...(truncated)", "body_bytes": 1251, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:03:41 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "17327"}, "body": "\n\n\n /caldav/calendars/public/1.ics\n \n \n \"eb53d018557c8fca\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T180341Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/2.ics\n \n \n \"190a40db82a13a9b\"\n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-30T18:07:05+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/wp-admin/admin.php?page=calendar-users&as=admin", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "same-origin", "Sec-Fetch-User": "?1", "Priority": "u=0, i"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:07:05 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T18:07:05+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/public/events?view=month&date=2026-03-30", "request": {"headers": {"Host": "localhost:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "en-GB,en;q=0.9", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "http://localhost:8080/calendar", "DNT": "1", "Sec-GPC": "1", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:07:05 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "9410"}, "body": "{\"data\": [{\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"uid\": \"5b12ff0070324c83a9d7@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 17, \"ui", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T18:33:43+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:33:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "6756"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"eb53d018557c8fca\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"190a40db82a13a9b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T18:33:43+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "328", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/17.ics/caldav/calendars/public/16.ics/caldav/calendars/public/11.ics", "body_bytes": 328, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:33:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "2816"}, "body": "\n\n\n /caldav/calendars/public/11.ics\n \n \n \"1dc48ba9c8e4c1e0\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:2ccb5f2076be62c35936@calendar-wp-plugin\r\nDTSTAMP:20260330T183343Z\r\nSUMMARY:Smoke Occurrences API\r\nDESCRIPTION:occ-endpoint\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T110000\r\nRRULE:FREQ=DAILY;COUNT=3\r\nEXDATE;TZID=Europe/London:20260402T100000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/16.ics\n \n \n \"57d6 ...(truncated)", "body_bytes": 2816, "body_truncated": false}} {"ts": "2026-03-30T18:58:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:19 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12887"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T18:58:23+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "66"}, "body": "{\"email\": \"sec-nodisclose@example.test\", \"password\": \"***\"}", "body_bytes": 66, "body_truncated": false}, "response": {"status": 409, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "71"}, "body": "{\"error\": {\"code\": \"conflict_error\", \"message\": \"user already exists\"}}", "body_bytes": 71, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "12887"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"2b728e795356b3a1\"", "Content-Length": "5828"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T185824Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T185824Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T185824Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T185824Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T185824Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T185824Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 21, \"uid\": \"31f9cb4f86804b4a5b99@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"074904f1a79b3def\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T18:58:24+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/21/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 21, \"uid\": \"31f9cb4f86804b4a5b99@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 21, \"uid\": \"31f9cb4f86804b4a5b99@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 21, \"uid\": \"31f9cb4f86804b4a5b99@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/21/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/21/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/21/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 21, \"uid\": \"31f9cb4f86804b4a5b99@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 21, \"uid\": \"31f9cb4f86804b4a5b99@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "ETag": "\"fd09919574f61846\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"fd09919574f61846\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T185824Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "ETag": "\"55b725a1dc9a9f7c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"55b725a1dc9a9f7c\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T185824Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "ETag": "\"93bc4c15adc79a61\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:24 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"93bc4c15adc79a61\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T185824Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "ETag": "\"3a4eeb42242c3576\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3a4eeb42242c3576\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T185825Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 22, \"uid\": \"43a308b5b85320514c11@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"3f98362302bad93a\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T18:58:25+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/22/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/22.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"10c5aa3ff8a36c74\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:43a308b5b85320514c11@calendar-wp-plugin\r\nDTSTAMP:20260330T185825Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 23, \"uid\": \"57e4605078dcee8f54a2@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"b1b9932905a7b74c\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T18:58:25+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/23/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/23/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 23, \"uid\": \"57e4605078dcee8f54a2@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 23, \"uid\": \"57e4605078dcee8f54a2@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 23, \"uid\": \"57e4605078dcee8f54a2@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 23, \"uid\": \"57e4605078dcee8f54a2@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/23/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/23/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 23, \"uid\": \"57e4605078dcee8f54a2@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 23, \"uid\": \"57e4605078dcee8f54a2@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 23, \"uid\": \"57e4605078dcee8f54a2@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 23, \"uid\": \"57e4605078dcee8f54a2@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "ETag": "\"ad165d5f81f5c072\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "14838"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "ETag": "\"7d8fff7329f9a530\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"7d8fff7329f9a530\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T185825Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "14838"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T18:58:25+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:58:25 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T18:59:04+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:04 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "14838"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T18:59:04+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:04 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:59:04+00:00", "client": "127.0.0.1", "method": "OPTIONS", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:04 GMT", "DAV": "1, 2, calendar-access", "Allow": "OPTIONS, PROPFIND, REPORT, GET, PUT, DELETE"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:59:07+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "77"}, "body": "{\"email\": \"sec-nodisclose-1774897144@example.test\", \"password\": \"***\"}", "body_bytes": 77, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 12, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T18:59:07+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/forgot-password", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "39"}, "body": "{\"email\": \"adrians@chezstephens.org.uk\"}", "body_bytes": 39, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "70"}, "body": "{\"data\": {\"status\": \"ok\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 70, "body_truncated": false}} {"ts": "2026-03-30T18:59:07+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774897144-1@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 13, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T18:59:07+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774897144-2@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 14, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T18:59:07+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774897144-3@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:07 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 15, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T18:59:08+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774897144-4@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:08 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 16, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T18:59:08+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774897144-5@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:08 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 17, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T18:59:08+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774897144-6@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:08 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 18, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T18:59:08+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 429, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:08 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"error\": {\"code\": \"rate_limited\", \"message\": \"Too many registration attempts. Try again later.\"}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T18:59:08+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/sec-1774897148.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Length": "201", "Content-Type": "application/x-www-form-urlencoded"}, "body": "[omitted non-text payload: 201 bytes, content-type=application/x-www-form-urlencoded]", "body_bytes": 201, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:08 GMT", "ETag": "\"74426c4ef3fe3bdd\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:59:08+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/sec-1774897148.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:08 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"74426c4ef3fe3bdd\"", "Content-Length": "287"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:sec-smoke-uid@example.test\r\nDTSTAMP:20260330T185908Z\r\nSUMMARY:Security Smoke Event\r\nDTSTART;TZID=Europe/London:20260415T100000\r\nDTEND;TZID=Europe/London:20260415T110000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 287, "body_truncated": false}} {"ts": "2026-03-30T18:59:08+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/999999.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:08 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T18:59:17+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:17 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:59:17+00:00", "client": "127.0.0.1", "method": "OPTIONS", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:17 GMT", "DAV": "1, 2, calendar-access", "Allow": "OPTIONS, PROPFIND, REPORT, GET, PUT, DELETE"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T18:59:17+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "117"}, "body": "", "body_bytes": 117, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:17 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1348"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar", "body_bytes": 117, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:27 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1348"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar", "body_bytes": 119, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:27 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "445"}, "body": "\n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 445, "body_truncated": false}} {"ts": "2026-03-30T18:59:27+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "167"}, "body": "", "body_bytes": 167, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 18:59:27 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "728"}, "body": "\n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 728, "body_truncated": false}} {"ts": "2026-03-30T19:03:43+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:03:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "7677"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"eb53d018557c8fca\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"190a40db82a13a9b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T19:03:43+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "780", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/23.ics/caldav/calendars/public/22.ics/caldav/calendars/public/21.ics/caldav/calendars/public/sec-1774897148.ics/caldav/calendars/public/smoke-cancelled-occurrence.ics/caldav/calendars/public/smoke-exdate-import.ics/caldav/calendars/public/smoke-monthly-last.ics/caldav/calendars/public/smoke-monthly-ordinal.ics/caldav/calendars/public/smoke-monthly-nth.ics/caldav/calendars/public/smoke-vtimezone.ics", "body_bytes": 780, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:03:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "8597"}, "body": "\n\n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n \"fd09919574f61846\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T190343Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n \"55b725a1dc9a9f7c\"\n BEGIN:V ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T19:06:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:06:40 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:06:40+00:00", "client": "127.0.0.1", "method": "OPTIONS", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:06:40 GMT", "DAV": "1, 2, calendar-access", "Allow": "OPTIONS, PROPFIND, REPORT, GET, PUT, DELETE"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:06:40+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "117"}, "body": "", "body_bytes": 117, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:06:40 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1348"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar", "body_bytes": 119, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:06:40 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "445"}, "body": "\n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 445, "body_truncated": false}} {"ts": "2026-03-30T19:06:40+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "167"}, "body": "", "body_bytes": 167, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:06:40 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "728"}, "body": "\n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 728, "body_truncated": false}} {"ts": "2026-03-30T19:16:05+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:16:05 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:16:05+00:00", "client": "127.0.0.1", "method": "OPTIONS", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:16:05 GMT", "DAV": "1, 2, calendar-access", "Allow": "OPTIONS, PROPFIND, REPORT, GET, PUT, DELETE"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:16:05+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "117"}, "body": "", "body_bytes": 117, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:16:05 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1348"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar", "body_bytes": 119, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:16:05 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "445"}, "body": "\n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 445, "body_truncated": false}} {"ts": "2026-03-30T19:16:05+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "167"}, "body": "", "body_bytes": 167, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:16:05 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "728"}, "body": "\n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 728, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "14838"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"435242ad54fe20be\"", "Content-Length": "6806"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 24, \"uid\": \"ff961c0d028da4c33d68@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"13736f3159f811a0\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:27:35+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/24/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 24, \"uid\": \"ff961c0d028da4c33d68@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 24, \"uid\": \"ff961c0d028da4c33d68@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 24, \"uid\": \"ff961c0d028da4c33d68@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/24/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/24/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/24/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 24, \"uid\": \"ff961c0d028da4c33d68@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 24, \"uid\": \"ff961c0d028da4c33d68@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "ETag": "\"227c6db7bb9af481\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"227c6db7bb9af481\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "ETag": "\"e59b158ebd60c483\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e59b158ebd60c483\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "ETag": "\"0d9783a0beedd0ef\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"0d9783a0beedd0ef\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "ETag": "\"de783c88365b72e6\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"de783c88365b72e6\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 25, \"uid\": \"3c229224b9c6e55380f3@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"11dc511cc506316c\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:27:35+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/25/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/25.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"7c606408b74ecb81\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:3c229224b9c6e55380f3@calendar-wp-plugin\r\nDTSTAMP:20260330T192735Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 26, \"uid\": \"5d29e505c8af669ff7f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"6e797a165f88a673\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:27:35+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/26/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/26/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 26, \"uid\": \"5d29e505c8af669ff7f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 26, \"uid\": \"5d29e505c8af669ff7f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 26, \"uid\": \"5d29e505c8af669ff7f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 26, \"uid\": \"5d29e505c8af669ff7f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/26/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:35+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/26/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:35 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 26, \"uid\": \"5d29e505c8af669ff7f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 26, \"uid\": \"5d29e505c8af669ff7f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 26, \"uid\": \"5d29e505c8af669ff7f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 26, \"uid\": \"5d29e505c8af669ff7f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:27:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:36 GMT", "ETag": "\"7675cb635bbcecc0\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "16789"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:27:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:27:36+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:36 GMT", "ETag": "\"4a343b62858a1e3f\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:27:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:36 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"4a343b62858a1e3f\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T192736Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T19:27:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "16789"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:27:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:36 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T19:27:36+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:27:36 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T19:33:43+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "8598"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"eb53d018557c8fca\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"190a40db82a13a9b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T19:33:43+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "720", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/26.ics/caldav/calendars/public/25.ics/caldav/calendars/public/24.ics/caldav/calendars/public/smoke-cancelled-occurrence.ics/caldav/calendars/public/smoke-exdate-import.ics/caldav/calendars/public/smoke-monthly-last.ics/caldav/calendars/public/smoke-monthly-ordinal.ics/caldav/calendars/public/smoke-monthly-nth.ics/caldav/calendars/public/smoke-vtimezone.ics", "body_bytes": 720, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:43 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "7815"}, "body": "\n\n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n \"227c6db7bb9af481\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T193343Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n \"e59b158ebd60c483\"\n BEGIN:V ...(truncated)", "body_bytes": 3919, "body_truncated": true}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "16789"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"f0955aca05643a7e\"", "Content-Length": "7784"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 27, \"uid\": \"fa1d8a27cfbf4aa40bd7@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a36c468e33bf09f5\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:33:52+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/27/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 27, \"uid\": \"fa1d8a27cfbf4aa40bd7@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 27, \"uid\": \"fa1d8a27cfbf4aa40bd7@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 27, \"uid\": \"fa1d8a27cfbf4aa40bd7@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/27/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/27/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/27/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 27, \"uid\": \"fa1d8a27cfbf4aa40bd7@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 27, \"uid\": \"fa1d8a27cfbf4aa40bd7@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "ETag": "\"6350421b1463753a\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"6350421b1463753a\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "ETag": "\"5cfa99671f4b7beb\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5cfa99671f4b7beb\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "ETag": "\"65be3c124db419c5\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"65be3c124db419c5\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "ETag": "\"3905a2d554e7b5ba\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3905a2d554e7b5ba\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 28, \"uid\": \"aea231c47fe7081e8d96@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"5820328298180a9e\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:33:52+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/28/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/28.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"c73446c499d71fd1\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:aea231c47fe7081e8d96@calendar-wp-plugin\r\nDTSTAMP:20260330T193352Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T19:33:52+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:52 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 29, \"uid\": \"66c44f2dcba00c571e7c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"82b317029b0183ad\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:33:52+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/29/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/29/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 29, \"uid\": \"66c44f2dcba00c571e7c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 29, \"uid\": \"66c44f2dcba00c571e7c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 29, \"uid\": \"66c44f2dcba00c571e7c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 29, \"uid\": \"66c44f2dcba00c571e7c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/29/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/29/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 29, \"uid\": \"66c44f2dcba00c571e7c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 29, \"uid\": \"66c44f2dcba00c571e7c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 29, \"uid\": \"66c44f2dcba00c571e7c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 29, \"uid\": \"66c44f2dcba00c571e7c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "ETag": "\"3a78837c720108cb\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "18740"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "ETag": "\"cefb5ce31068ad03\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"cefb5ce31068ad03\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T193353Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "18740"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T19:33:53+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:33:53 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "18740"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"9602848cf7b23ee1\"", "Content-Length": "8762"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T193518Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T193518Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T193518Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T193518Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T193518Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T193518Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 30, \"uid\": \"372f5751ecd17b5b1356@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"9310ebe908eeec52\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:35:18+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/30/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 30, \"uid\": \"372f5751ecd17b5b1356@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 30, \"uid\": \"372f5751ecd17b5b1356@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 30, \"uid\": \"372f5751ecd17b5b1356@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/30/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/30/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/30/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 30, \"uid\": \"372f5751ecd17b5b1356@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 30, \"uid\": \"372f5751ecd17b5b1356@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "ETag": "\"5bdb56afb01d0635\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5bdb56afb01d0635\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T193518Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "ETag": "\"d944656d7163bc58\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:18+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:18 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"d944656d7163bc58\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T193518Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "ETag": "\"e4df6ba9e5bc5ebc\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e4df6ba9e5bc5ebc\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T193519Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "ETag": "\"de42e0a9050f4298\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"de42e0a9050f4298\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T193519Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 31, \"uid\": \"57916be3224eecf16f71@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"c671f8dde75b0a3e\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:35:19+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/31/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/31.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"1d4c253672ed1649\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:57916be3224eecf16f71@calendar-wp-plugin\r\nDTSTAMP:20260330T193519Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 32, \"uid\": \"875b585d579132363b4b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"bc93364ad884fc9a\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:35:19+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/32/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/32/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 32, \"uid\": \"875b585d579132363b4b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 32, \"uid\": \"875b585d579132363b4b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 32, \"uid\": \"875b585d579132363b4b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 32, \"uid\": \"875b585d579132363b4b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/32/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/32/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 32, \"uid\": \"875b585d579132363b4b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 32, \"uid\": \"875b585d579132363b4b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 32, \"uid\": \"875b585d579132363b4b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 32, \"uid\": \"875b585d579132363b4b@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "ETag": "\"7a677c31a5560dce\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "20691"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "ETag": "\"0333f0a3bac7134c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"0333f0a3bac7134c\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T193519Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "20691"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T19:35:19+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:35:19 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T19:37:42+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:37:42 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:37:42+00:00", "client": "127.0.0.1", "method": "OPTIONS", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:37:42 GMT", "DAV": "1, 2, calendar-access", "Allow": "OPTIONS, PROPFIND, REPORT, GET, PUT, DELETE"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:37:42+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "117"}, "body": "", "body_bytes": 117, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:37:42 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1348"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar", "body_bytes": 119, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:37:42 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "445"}, "body": "\n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 445, "body_truncated": false}} {"ts": "2026-03-30T19:37:42+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "167"}, "body": "", "body_bytes": 167, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:37:42 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "728"}, "body": "\n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 728, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "20691"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"fe1ebad7407f5a79\"", "Content-Length": "9740"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T194323Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T194323Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T194323Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T194323Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3905, "body_truncated": true}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T194323Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T194323Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 33, \"uid\": \"9ba79385ddc86c0ed142@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"47d5fe1d950c41e8\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:43:23+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/33/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 33, \"uid\": \"9ba79385ddc86c0ed142@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 33, \"uid\": \"9ba79385ddc86c0ed142@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 33, \"uid\": \"9ba79385ddc86c0ed142@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/33/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/33/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/33/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 33, \"uid\": \"9ba79385ddc86c0ed142@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 33, \"uid\": \"9ba79385ddc86c0ed142@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "ETag": "\"428b0774334217a0\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"428b0774334217a0\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T194323Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "ETag": "\"566c179900289f19\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"566c179900289f19\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T194323Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "ETag": "\"5f03a7c2f0425eed\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5f03a7c2f0425eed\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T194323Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T19:43:23+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:23 GMT", "ETag": "\"cbde1523187e131a\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"cbde1523187e131a\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T194324Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 34, \"uid\": \"6792256d04b9f2249471@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"09fbd59129f4f866\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:43:24+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/34/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/34.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"cccf56daf59f3994\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:6792256d04b9f2249471@calendar-wp-plugin\r\nDTSTAMP:20260330T194324Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 35, \"uid\": \"999a1dcfe70585b069f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"664c73b2a2759081\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:43:24+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/35/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/35/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 35, \"uid\": \"999a1dcfe70585b069f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 35, \"uid\": \"999a1dcfe70585b069f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 35, \"uid\": \"999a1dcfe70585b069f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 35, \"uid\": \"999a1dcfe70585b069f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/35/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/35/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 35, \"uid\": \"999a1dcfe70585b069f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 35, \"uid\": \"999a1dcfe70585b069f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 35, \"uid\": \"999a1dcfe70585b069f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 35, \"uid\": \"999a1dcfe70585b069f1@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "ETag": "\"46a37a3457db1c66\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "22642"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "ETag": "\"5649d2d0c6078ad2\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"5649d2d0c6078ad2\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T194324Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "22642"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T19:43:24+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:24 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "22642"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"65fca5862933b6d8\"", "Content-Length": "10718"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T194338Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T194338Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T194338Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T194338Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3904, "body_truncated": true}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T194338Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T194338Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 36, \"uid\": \"9ba924e112c6328c7991@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"631138c973aa434a\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:43:38+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/36/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 36, \"uid\": \"9ba924e112c6328c7991@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 36, \"uid\": \"9ba924e112c6328c7991@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 36, \"uid\": \"9ba924e112c6328c7991@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/36/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/36/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/36/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 36, \"uid\": \"9ba924e112c6328c7991@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 36, \"uid\": \"9ba924e112c6328c7991@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "ETag": "\"d4b92d5e931bb87e\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"d4b92d5e931bb87e\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T194338Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "ETag": "\"0ffe94cdaf00da8f\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:38+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:38 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"0ffe94cdaf00da8f\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T194338Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "ETag": "\"deaa13cf4c78a1a2\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"deaa13cf4c78a1a2\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T194339Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "ETag": "\"b14dcf1638b1116b\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"b14dcf1638b1116b\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T194339Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 37, \"uid\": \"dc869cdd20b57c4ce060@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"a42acbb8f1012c50\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:43:39+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/37/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/37.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"7ec2bdd719b303a2\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:dc869cdd20b57c4ce060@calendar-wp-plugin\r\nDTSTAMP:20260330T194339Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 38, \"uid\": \"08597e0cd8484e4afa74@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"f35557f2b1ee363d\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:43:39+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/38/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/38/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 38, \"uid\": \"08597e0cd8484e4afa74@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 38, \"uid\": \"08597e0cd8484e4afa74@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 38, \"uid\": \"08597e0cd8484e4afa74@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 38, \"uid\": \"08597e0cd8484e4afa74@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/38/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/38/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 38, \"uid\": \"08597e0cd8484e4afa74@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 38, \"uid\": \"08597e0cd8484e4afa74@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 38, \"uid\": \"08597e0cd8484e4afa74@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 38, \"uid\": \"08597e0cd8484e4afa74@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "ETag": "\"0670fbaf6ffb7eb5\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "24593"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "ETag": "\"69637d4b3fac5b1c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"69637d4b3fac5b1c\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T194339Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "24593"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T19:43:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:43:39 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "24593"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "24593"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"b9666df54fddc7d2\"", "Content-Length": "11696"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3904, "body_truncated": true}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "OPTIONS", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "DAV": "1, 2, calendar-access", "Allow": "OPTIONS, PROPFIND, REPORT, GET, PUT, DELETE"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "117"}, "body": "", "body_bytes": 117, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1348"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 39, \"uid\": \"5583f348e82b4d30498e@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"6afb4a6b08afb64f\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:45:22+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/principals/user/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "0", "Content-Type": "application/xml", "Content-Length": "119"}, "body": "", "body_bytes": 119, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "445"}, "body": "\n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 445, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/39/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 39, \"uid\": \"5583f348e82b4d30498e@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 39, \"uid\": \"5583f348e82b4d30498e@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 39, \"uid\": \"5583f348e82b4d30498e@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "167"}, "body": "", "body_bytes": 167, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "728"}, "body": "\n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 728, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/39/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/39/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/39/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 39, \"uid\": \"5583f348e82b4d30498e@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 39, \"uid\": \"5583f348e82b4d30498e@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "ETag": "\"e54b1ce109a46cc8\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e54b1ce109a46cc8\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "ETag": "\"3ca3370cf9a8bc3d\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3ca3370cf9a8bc3d\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "ETag": "\"391d992cae22bea5\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"391d992cae22bea5\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "ETag": "\"0f6f0463ee50274c\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"0f6f0463ee50274c\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 40, \"uid\": \"780f5c74fb0ff81f4d77@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"601dc1b8caa7090a\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:45:22+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/40/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/40.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"9af632dd6f1dd8f5\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:780f5c74fb0ff81f4d77@calendar-wp-plugin\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 41, \"uid\": \"a2738714eb50fc15415c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"8cce090cd63776d1\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:45:22+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/41/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/41/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 41, \"uid\": \"a2738714eb50fc15415c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 41, \"uid\": \"a2738714eb50fc15415c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 41, \"uid\": \"a2738714eb50fc15415c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 41, \"uid\": \"a2738714eb50fc15415c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/41/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/41/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 41, \"uid\": \"a2738714eb50fc15415c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 41, \"uid\": \"a2738714eb50fc15415c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 41, \"uid\": \"a2738714eb50fc15415c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 41, \"uid\": \"a2738714eb50fc15415c@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "ETag": "\"cc710e449dbfa1ae\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "26544"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "ETag": "\"050cf9004963ffed\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:22+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:22 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"050cf9004963ffed\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T194522Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T19:45:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "26544"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:45:23+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "77"}, "body": "{\"email\": \"sec-nodisclose-1774899922@example.test\", \"password\": \"***\"}", "body_bytes": 77, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 19, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:45:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:23 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T19:45:23+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:23 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T19:45:24+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/forgot-password", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "39"}, "body": "{\"email\": \"adrians@chezstephens.org.uk\"}", "body_bytes": 39, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "70"}, "body": "{\"data\": {\"status\": \"ok\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 70, "body_truncated": false}} {"ts": "2026-03-30T19:45:24+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774899922-1@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 20, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:45:24+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774899922-2@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 21, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:45:25+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774899922-3@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 22, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:45:25+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774899922-4@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 23, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:45:25+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774899922-5@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 24, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:45:25+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774899922-6@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 25, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:45:26+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774899922-7@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:26 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 26, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:45:26+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 429, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:26 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"error\": {\"code\": \"rate_limited\", \"message\": \"Too many registration attempts. Try again later.\"}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T19:45:26+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/sec-1774899926.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Length": "201", "Content-Type": "application/x-www-form-urlencoded"}, "body": "[omitted non-text payload: 201 bytes, content-type=application/x-www-form-urlencoded]", "body_bytes": 201, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:26 GMT", "ETag": "\"60902c44e50b1c11\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:45:26+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/sec-1774899926.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:26 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"60902c44e50b1c11\"", "Content-Length": "287"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:sec-smoke-uid@example.test\r\nDTSTAMP:20260330T194526Z\r\nSUMMARY:Security Smoke Event\r\nDTSTART;TZID=Europe/London:20260415T100000\r\nDTEND;TZID=Europe/London:20260415T110000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 287, "body_truncated": false}} {"ts": "2026-03-30T19:45:26+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/999999.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:45:26 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "26544"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"e2b1a46432ffc137\"", "Content-Length": "12674"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3904, "body_truncated": true}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/xml; charset=utf-8", "Depth": "1", "Content-Length": "239"}, "body": "\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 42, \"uid\": \"cc7484132e5ceca0e789@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"ae03a0cef700c3da\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:47:39+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/42/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 42, \"uid\": \"cc7484132e5ceca0e789@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 42, \"uid\": \"cc7484132e5ceca0e789@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 42, \"uid\": \"cc7484132e5ceca0e789@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/42/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/42/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/42/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 42, \"uid\": \"cc7484132e5ceca0e789@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 42, \"uid\": \"cc7484132e5ceca0e789@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "ETag": "\"17ccc871adec4bc3\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"17ccc871adec4bc3\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "ETag": "\"f3ef2b7fc18dcec7\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"f3ef2b7fc18dcec7\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "ETag": "\"f5d439a17623207e\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"f5d439a17623207e\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "ETag": "\"ec62ff1e4b136e42\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"ec62ff1e4b136e42\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T194739Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T19:47:39+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:39 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 43, \"uid\": \"672c78f46dcc88e86186@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"773becc6bc4fddc5\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:47:39+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/43/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/43.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"90276a2d43ab3d9f\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:672c78f46dcc88e86186@calendar-wp-plugin\r\nDTSTAMP:20260330T194740Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 44, \"uid\": \"4d93e11a90cee95c5c1a@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"32aa098f1ad6c404\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:47:40+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/44/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/44/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 44, \"uid\": \"4d93e11a90cee95c5c1a@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 44, \"uid\": \"4d93e11a90cee95c5c1a@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 44, \"uid\": \"4d93e11a90cee95c5c1a@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 44, \"uid\": \"4d93e11a90cee95c5c1a@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/44/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/44/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 44, \"uid\": \"4d93e11a90cee95c5c1a@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 44, \"uid\": \"4d93e11a90cee95c5c1a@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 44, \"uid\": \"4d93e11a90cee95c5c1a@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 44, \"uid\": \"4d93e11a90cee95c5c1a@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "ETag": "\"f9cb0b8409520dff\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "28495"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "ETag": "\"43a1d243dfe2e00d\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"43a1d243dfe2e00d\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T194740Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "28495"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T19:47:40+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:47:40 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "28495"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "28495"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"8651b7f9d8461cda\"", "Content-Length": "13652"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nCALSCALE:GREGORIAN\r\nX-WR-TIMEZONE:Europe/London\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T195658Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-002@calendar-wp-plugin\r\nDTSTAMP:20260330T195658Z\r\nSUMMARY:Office Closed\r\nDESCRIPTION:Public holiday closure.\r\nLOCATION:HQ\r\nCATEGORIES:Operations\r\nDTSTART;VALUE=DATE:20260504\r\nDTEND;VALUE=DATE:20260505\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-003@calendar-wp-plugin\r\nDTSTAMP:20260330T195658Z\r\nSUMMARY:Daily Standup\r\nDESCRIPTION:15 minute sync.\r\nLOCATION:Online\r\nCATEGORIES:Team\r\nDTSTART;TZID=Europe/London:20260406T090000\r\nDTEND;TZID=Europe/London:20260406T091500\r\nRRULE:FREQ=DAILY;COUNT=10\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T195658Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\n ...(truncated)", "body_bytes": 3904, "body_truncated": true}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 401, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "WWW-Authenticate": "Basic realm=\"calendar-caldav-fixture\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "OPTIONS", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "DAV": "1, 2, calendar-access", "Allow": "OPTIONS, PROPFIND, REPORT, GET, PUT, DELETE"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/1.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"eb53d018557c8fca\"", "Content-Length": "364"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-001@calendar-wp-plugin\r\nDTSTAMP:20260330T195658Z\r\nSUMMARY:Board Meeting\r\nDESCRIPTION:Quarterly board review.\r\nLOCATION:Room A\r\nCATEGORIES:Governance\r\nDTSTART;TZID=Europe/London:20260401T100000\r\nDTEND;TZID=Europe/London:20260401T113000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 364, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "117"}, "body": "", "body_bytes": 117, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "1348"}, "body": "\n\n\n /caldav/\n \n \n /caldav/principals/user/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n\n \n /caldav/calendars/public/4.ics\n\n", "body_bytes": 239, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "997"}, "body": "\n\n\n /caldav/calendars/public/4.ics\n \n \n \"691a56c3c4084218\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:fixture-ce-004@calendar-wp-plugin\r\nDTSTAMP:20260330T195658Z\r\nSUMMARY:Community Lunch\r\nDESCRIPTION:Weekly community lunch.\r\nLOCATION:Cafeteria\r\nCATEGORIES:Community\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n", "body_bytes": 997, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "287"}, "body": "{\"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"count\", \"repeat_count\": 3}", "body_bytes": 287, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "647"}, "body": "{\"data\": {\"id\": 45, \"uid\": \"ae50f5d7efb7ef19f4cf@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"count\", \"repeat_count\": 3, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"0896ee7c0c565fe2\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:56:58+00:00\"}}", "body_bytes": 647, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/principals/user/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "0", "Content-Type": "application/xml", "Content-Length": "119"}, "body": "", "body_bytes": 119, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "445"}, "body": "\n\n\n /caldav/principals/user/\n \n \n /caldav/calendars/\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 445, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/45/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "937"}, "body": "{\"data\": [{\"event_id\": 45, \"uid\": \"ae50f5d7efb7ef19f4cf@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 45, \"uid\": \"ae50f5d7efb7ef19f4cf@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-02T10:00:00+01:00\", \"occurrence_end\": \"2026-04-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 45, \"uid\": \"ae50f5d7efb7ef19f4cf@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 937, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/45/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/45/occurrences/2026-04-02T10:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Depth": "1", "Content-Type": "application/xml", "Content-Length": "167"}, "body": "", "body_bytes": 167, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "728"}, "body": "\n\n\n /caldav/calendars/\n \n \n \n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n", "body_bytes": 728, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/45/occurrences?from=2026-04-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "628"}, "body": "{\"data\": [{\"event_id\": 45, \"uid\": \"ae50f5d7efb7ef19f4cf@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-01T10:00:00+01:00\", \"occurrence_end\": \"2026-04-01T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 45, \"uid\": \"ae50f5d7efb7ef19f4cf@calendar-wp-plugin\", \"title\": \"Smoke Occurrences API\", \"description\": \"occ-endpoint\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-04-03T10:00:00+01:00\", \"occurrence_end\": \"2026-04-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}]}", "body_bytes": 628, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "454"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:Europe/London\nBEGIN:STANDARD\nDTSTART:18471201T000000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9\nTZOFFSETFROM:+0115\nTZOFFSETTO:+0000\nTZNAME:GMT\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:smoke-vtimezone-parser-001\nSUMMARY:Smoke VTIMEZONE Parse\nDTSTART;TZID=Europe/London:20260423T150000\nDTEND;TZID=Europe/London:20260423T160000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 454, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "ETag": "\"4777d0172be8ffc5\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-vtimezone.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"4777d0172be8ffc5\"", "Content-Length": "288"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260330T195658Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 288, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "261"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-nth-001\nSUMMARY:Smoke Monthly Nth\nDTSTART;TZID=Europe/London:20260402T150000\nDTEND;TZID=Europe/London:20260402T160000\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 261, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "ETag": "\"93aae3c5c0e310d1\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:58+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-nth.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:58 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"93aae3c5c0e310d1\"", "Content-Length": "319"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-nth-001\r\nDTSTAMP:20260330T195658Z\r\nSUMMARY:Smoke Monthly Nth\r\nDTSTART;TZID=Europe/London:20260426T150000\r\nDTEND;TZID=Europe/London:20260426T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 319, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "259"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-ordinal-001\nSUMMARY:Smoke Monthly Ordinal\nDTSTART;TZID=Europe/London:20260411T150000\nDTEND;TZID=Europe/London:20260411T160000\nRRULE:FREQ=MONTHLY;BYDAY=2SA\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 259, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "ETag": "\"3d1c488be8943444\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-ordinal.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"3d1c488be8943444\"", "Content-Length": "327"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-ordinal-001\r\nDTSTAMP:20260330T195659Z\r\nSUMMARY:Smoke Monthly Ordinal\r\nDTSTART;TZID=Europe/London:20260411T150000\r\nDTEND;TZID=Europe/London:20260411T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 327, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "264"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-monthly-last-001\nSUMMARY:Smoke Monthly Last\nDTSTART;TZID=Europe/London:20260425T150000\nDTEND;TZID=Europe/London:20260425T160000\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 264, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "ETag": "\"bce963d66714a73b\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-monthly-last.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"bce963d66714a73b\"", "Content-Length": "322"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-monthly-last-001\r\nDTSTAMP:20260330T195659Z\r\nSUMMARY:Smoke Monthly Last\r\nDTSTART;TZID=Europe/London:20260425T150000\r\nDTEND;TZID=Europe/London:20260425T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SA;BYSETPOS=-1\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 322, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "362"}, "body": "{\"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-19T15:00:00+01:00\", \"end_datetime\": \"2026-05-19T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\"}", "body_bytes": 362, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "673"}, "body": "{\"data\": {\"id\": 46, \"uid\": \"9fd41c1cc728b146f791@calendar-wp-plugin\", \"title\": \"Smoke 4th Sunday Anchor\", \"description\": \"anchor-normalization\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-05-24T15:00:00+01:00\", \"end_datetime\": \"2026-05-24T16:00:00+01:00\", \"repeat_type\": \"monthly\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"weekday_of_month\", \"repeat_nth_day\": null, \"repeat_nth_pos\": 4, \"repeat_nth_weekday\": 0, \"repeat_range_mode\": \"no_end\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"65b610e6c9d5be76\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:56:59+00:00\"}}", "body_bytes": 673, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/46/occurrences/2026-05-24T15:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/46.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"cb0262906b4e16d2\"", "Content-Length": "420"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:9fd41c1cc728b146f791@calendar-wp-plugin\r\nDTSTAMP:20260330T195659Z\r\nSUMMARY:Smoke 4th Sunday Anchor\r\nDESCRIPTION:anchor-normalization\r\nDTSTART;TZID=Europe/London:20260524T150000\r\nDTEND;TZID=Europe/London:20260524T160000\r\nRRULE:FREQ=MONTHLY;BYDAY=SU;BYSETPOS=4\r\nEXDATE;TZID=Europe/London:20260524T150000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 420, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "X-WP-User": "admin", "Content-Length": "295"}, "body": "{\"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_range_mode\": \"until\", \"repeat_until\": \"2026-03-19\"}", "body_bytes": 295, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "655"}, "body": "{\"data\": {\"id\": 47, \"uid\": \"5058caddf2fc8c58b4dc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"start_datetime\": \"2026-03-02T10:00:00+00:00\", \"end_datetime\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"until\", \"repeat_count\": null, \"repeat_until\": \"2026-03-19\", \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"e65810e02d6e9a50\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T19:56:59+00:00\"}}", "body_bytes": 655, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/47/occurrences/2026-03-11T11:00:00+01:00", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/47/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "5212"}, "body": "{\"data\": [{\"event_id\": 47, \"uid\": \"5058caddf2fc8c58b4dc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 47, \"uid\": \"5058caddf2fc8c58b4dc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 47, \"uid\": \"5058caddf2fc8c58b4dc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 47, \"uid\": \"5058caddf2fc8c58b4dc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "DELETE", "path": "/wp-json/calendar/v1/events/47/occurrences/2026-03-10", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 204, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT"}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/47/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4906"}, "body": "{\"data\": [{\"event_id\": 47, \"uid\": \"5058caddf2fc8c58b4dc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+00:00\", \"occurrence_end\": \"2026-03-02T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 47, \"uid\": \"5058caddf2fc8c58b4dc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+00:00\", \"occurrence_end\": \"2026-03-03T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 47, \"uid\": \"5058caddf2fc8c58b4dc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+00:00\", \"occurrence_end\": \"2026-03-04T11:00:00+00:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 47, \"uid\": \"5058caddf2fc8c58b4dc@calendar-wp-plugin\", \"title\": \"Smoke Daily Exception TZ\", \"description\": \"tz-key\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+00:00\", \"occurrence_end\": \"2026-03-05T11:00:00", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-exdate-import.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "323"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-exdate-import-001\nSUMMARY:Smoke EXDATE Import\nDTSTART;TZID=Europe/London:20260302T100000\nDTEND;TZID=Europe/London:20260302T110000\nRRULE:FREQ=DAILY;UNTIL=20260319T235959\nEXDATE;TZID=Europe/London:20260310T100000,20260311T100000\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 323, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "ETag": "\"3894b8874c8aec1f\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "30451"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/18/occurrences?from=2026-03-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "4474"}, "body": "{\"data\": [{\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-02T10:00:00+01:00\", \"occurrence_end\": \"2026-03-02T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-03T10:00:00+01:00\", \"occurrence_end\": \"2026-03-03T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-04T10:00:00+01:00\", \"occurrence_end\": \"2026-03-04T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE Import\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-03-05T10:00:00+01:00\", \"occurrence_end\": \"2026-03-05T11:00:00+01:00\", \"repeat_type\": \"daily\"}, {\"event_id\": 18, \"uid\": \"smoke-exdate-import-001\", \"title\": \"Smoke EXDATE ", "body_bytes": 3928, "body_truncated": true}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "text/calendar; charset=utf-8", "Content-Length": "467"}, "body": "BEGIN:VCALENDAR\nPRODID:-//Smoke//EN\nVERSION:2.0\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nSUMMARY:Smoke Cancelled Occurrence\nDTSTART;TZID=Europe/London:20260408T123000\nDTEND;TZID=Europe/London:20260408T133000\nRRULE:FREQ=WEEKLY\nEND:VEVENT\nBEGIN:VEVENT\nUID:smoke-cancelled-occurrence-001\nRECURRENCE-ID;TZID=Europe/London:20260506T123000\nDTSTART;TZID=Europe/London:20260506T123000\nDTEND;TZID=Europe/London:20260506T133000\nSTATUS:CANCELLED\nEND:VEVENT\nEND:VCALENDAR\n", "body_bytes": 467, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "ETag": "\"14340d12265ad2dd\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/smoke-cancelled-occurrence.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"14340d12265ad2dd\"", "Content-Length": "359"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-cancelled-occurrence-001\r\nDTSTAMP:20260330T195659Z\r\nSUMMARY:Smoke Cancelled Occurrence\r\nDTSTART;TZID=Europe/London:20260408T123000\r\nDTEND;TZID=Europe/London:20260408T133000\r\nRRULE:FREQ=WEEKLY\r\nEXDATE;TZID=Europe/London:20260506T123000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 359, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "30452"}, "body": "{\"data\": [{\"id\": 1, \"uid\": \"fixture-ce-001@calendar-wp-plugin\", \"title\": \"Board Meeting\", \"description\": \"Quarterly board review.\", \"location\": \"Room A\", \"category\": \"Governance\", \"all_day_event\": false, \"start_datetime\": \"2026-04-01T10:00:00+01:00\", \"end_datetime\": \"2026-04-01T11:30:00+01:00\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"eb53d018557c8fca\\\"\", \"sync_version\": 1, \"updated_at\": \"2026-03-30T17:40:10+00:00\"}, {\"id\": 2, \"uid\": \"fixture-ce-002@calendar-wp-plugin\", \"title\": \"Office Closed\", \"description\": \"Public holiday closure.\", \"location\": \"HQ\", \"category\": \"Operations\", \"all_day_event\": true, \"start_datetime\": \"2026-05-04\", \"end_datetime\": \"2026-05-05\", \"repeat_type\": \"none\", \"repeat_interval\": 1, \"repeat_nth_mode\": \"\", \"repeat_nth_day\": null, \"repeat_nth_pos\": null, \"repeat_nth_weekday\": null, \"repeat_range_mode\": \"none\", \"repeat_count\": null, \"repeat_until\": null, \"timezone\": \"Europe/London\", \"calendar_id\": \"public\", \"etag\": \"\\\"190a4", "body_bytes": 3927, "body_truncated": true}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/wp-json/calendar/v1/events/19/occurrences?from=2026-05-01&months=1", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "X-WP-User": "admin"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "892"}, "body": "{\"data\": [{\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-13T12:30:00+01:00\", \"occurrence_end\": \"2026-05-13T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-20T12:30:00+01:00\", \"occurrence_end\": \"2026-05-20T13:30:00+01:00\", \"repeat_type\": \"weekly\"}, {\"event_id\": 19, \"uid\": \"smoke-cancelled-occurrence-001\", \"title\": \"Smoke Cancelled Occurrence\", \"description\": \"\", \"location\": \"\", \"category\": \"\", \"all_day_event\": false, \"occurrence_start\": \"2026-05-27T12:30:00+01:00\", \"occurrence_end\": \"2026-05-27T13:30:00+01:00\", \"repeat_type\": \"weekly\"}]}", "body_bytes": 892, "body_truncated": false}} {"ts": "2026-03-30T19:56:59+00:00", "client": "127.0.0.1", "method": "GET", "path": "/calendar", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:56:59 GMT", "Content-Type": "text/html; charset=utf-8", "Content-Length": "43447"}, "body": "[omitted html payload: 3934 bytes]", "body_bytes": 3934, "body_truncated": true}} {"ts": "2026-03-30T19:57:00+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "77"}, "body": "{\"email\": \"sec-nodisclose-1774900618@example.test\", \"password\": \"***\"}", "body_bytes": 77, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 27, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:57:00+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/forgot-password", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "39"}, "body": "{\"email\": \"adrians@chezstephens.org.uk\"}", "body_bytes": 39, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "70"}, "body": "{\"data\": {\"status\": \"ok\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 70, "body_truncated": false}} {"ts": "2026-03-30T19:57:00+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774900618-1@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 28, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:57:00+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774900618-2@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 29, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:57:00+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774900618-3@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:00 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 30, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:57:01+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774900618-4@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:01 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 31, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:57:01+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774900618-5@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:01 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 32, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:57:01+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774900618-6@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:01 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 33, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:57:01+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "{\"email\": \"sec-rate-1774900618-7@example.test\", \"password\": \"***\"}", "body_bytes": 73, "body_truncated": false}, "response": {"status": 201, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:01 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "99"}, "body": "{\"data\": {\"user_id\": 34, \"status\": \"pending_approval\", \"email_status\": \"sent\", \"email_sent\": true}}", "body_bytes": 99, "body_truncated": false}} {"ts": "2026-03-30T19:57:01+00:00", "client": "127.0.0.1", "method": "POST", "path": "/wp-json/calendar/v1/users/register", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Type": "application/json", "Content-Length": "73"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 429, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:01 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "98"}, "body": "{\"error\": {\"code\": \"rate_limited\", \"message\": \"Too many registration attempts. Try again later.\"}}", "body_bytes": 98, "body_truncated": false}} {"ts": "2026-03-30T19:57:01+00:00", "client": "127.0.0.1", "method": "PUT", "path": "/caldav/calendars/public/sec-1774900621.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*", "Content-Length": "201", "Content-Type": "application/x-www-form-urlencoded"}, "body": "[omitted non-text payload: 201 bytes, content-type=application/x-www-form-urlencoded]", "body_bytes": 201, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:01 GMT", "ETag": "\"32633048dcc96299\""}, "body": "", "body_bytes": 0, "body_truncated": false}} {"ts": "2026-03-30T19:57:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/sec-1774900621.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 200, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:02 GMT", "Content-Type": "text/calendar; charset=utf-8", "ETag": "\"32633048dcc96299\"", "Content-Length": "287"}, "body": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:sec-smoke-uid@example.test\r\nDTSTAMP:20260330T195702Z\r\nSUMMARY:Security Smoke Event\r\nDTSTART;TZID=Europe/London:20260415T100000\r\nDTEND;TZID=Europe/London:20260415T110000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "body_bytes": 287, "body_truncated": false}} {"ts": "2026-03-30T19:57:02+00:00", "client": "127.0.0.1", "method": "GET", "path": "/caldav/calendars/public/999999.ics", "request": {"headers": {"Host": "127.0.0.1:8080", "Authorization": "***", "User-Agent": "curl/8.14.1", "Accept": "*/*"}, "body": "", "body_bytes": 0, "body_truncated": false}, "response": {"status": 404, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Mon, 30 Mar 2026 19:57:02 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "62"}, "body": "{\"error\": {\"code\": \"not_found\", \"message\": \"Route not found\"}}", "body_bytes": 62, "body_truncated": false}} {"ts": "2026-03-31T04:26:37+00:00", "client": "127.0.0.1", "method": "PROPFIND", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "144", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n", "body_bytes": 144, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Tue, 31 Mar 2026 04:26:37 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "15045"}, "body": "\n\n\n /caldav/calendars/public/\n \n \n Public Calendar\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/1.ics\n \n \n text/calendar; charset=utf-8\"eb53d018557c8fca\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/2.ics\n \n \n text/calendar; charset=utf-8\"190a40db82a13a9b\"\n \n HTTP/1.1 200 OK\n \n\n\n /caldav/calendars/public/3.ics\n \n \n ...(truncated)", "body_bytes": 3918, "body_truncated": true}} {"ts": "2026-03-31T04:26:37+00:00", "client": "127.0.0.1", "method": "REPORT", "path": "/caldav/calendars/public/", "request": {"headers": {"Host": "127.0.0.1:8080", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Thunderbird/140.8.1", "Accept": "text/xml", "Accept-Language": "en-GB,en;q=0.5", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Charset": "utf-8,*;q=0.1", "Content-Type": "text/xml; charset=utf-8", "Content-Length": "1644", "Depth": "1", "Origin": "http://127.0.0.1:8080", "DNT": "1", "Authorization": "***", "Connection": "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-origin", "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache"}, "body": "\n/caldav/calendars/public/47.ics/caldav/calendars/public/46.ics/caldav/calendars/public/45.ics/caldav/calendars/public/44.ics/caldav/calendars/public/43.ics/caldav/calendars/public/42.ics/caldav/calendars/public/41.ics/caldav/calendars/public/40.ics/caldav/calendars/public/39.ics/caldav/calendars/public/38.ics/caldav/calendars/public/37.ics/caldav/calendars/public/36.ics/caldav/calendars/public/35.ics/caldav/calendars/public/34.ics/caldav/calendars/public/33.ics/caldav/calendars/public/32.ics/caldav/calendars/public/31.ics/caldav/calendars/public/30.ics/caldav/calendars/public/29.ics/caldav/calendars/public/28.ics/caldav/calendars/public/27.ics/caldav/calendars/publ ...(truncated)", "body_bytes": 1644, "body_truncated": false}, "response": {"status": 207, "headers": {"Server": "CalendarFixture/0.1 Python/3.13.5", "Date": "Tue, 31 Mar 2026 04:26:37 GMT", "Content-Type": "application/xml; charset=utf-8", "Content-Length": "24725"}, "body": "\n\n\n /caldav/calendars/public/smoke-vtimezone.ics\n \n \n \"4777d0172be8ffc5\"\n BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Calendar WP Plugin Fixture//EN\r\nBEGIN:VEVENT\r\nUID:smoke-vtimezone-parser-001\r\nDTSTAMP:20260331T042637Z\r\nSUMMARY:Smoke VTIMEZONE Parse\r\nDTSTART;TZID=Europe/London:20260423T150000\r\nDTEND;TZID=Europe/London:20260423T160000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n\n \n HTTP/1.1 200 OK\n \n \n\n /caldav/calendars/public/smoke-monthly-nth.ics\n \n \n \"93aae3c5c0e310d1\"\n BEGIN:V ...(truncated)", "body_bytes": 3918, "body_truncated": true}}