title: Google CalDAV: recreate meeting
body: <p>A <a href="https://syncevolution.org" rel="nofollow">SyncEvolution</a> user has reported problems with mirroring a local calendar in Google Calendar: when refreshing Google Calendar via CalDAV (= DELETE all events and recreate with PUT), some PUT commands fail with "404 Not Found".</p>
  
  <p>It looks like this happens for VEVENTs which have an ORGANIZER (i.e., meetings). It works for simpler VEVENTs that have no ORGANIZER. Example of the failure below.</p>
  
  <p>I believe this is a known limitation of Google CalDAV. The question is: what can be done to support this use case, either in the client or the server?</p>
  
  <p>I can't think of any workaround in the client. The 404 error is too unspecific to trigger a workaround, and even if the client could detect the root cause for it, there's no other way of recreating the event than the PUT, which is failing.</p>
  
  <hr>
  
  <pre><code>PUT /caldav/v2/patrick.ohly.estamos%40googlemail.com/events/4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz.ics HTTP/1.1
  Connection: TE
  TE: trailers
  Host: apidata.googleusercontent.com
  Content-Length: 928
  Content-Type: text/calendar; charset=utf-8
  User-Agent: SyncEvolution
  Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  
  Sending request-line and headers:
  Sending request body:
  Body block (928 bytes):
  [BEGIN:VCALENDAR
  VERSION:2.0
  PRODID:-//Synthesis AG//NONSGML SyncML Engine V3.4.0.47//EN
  BEGIN:VTIMEZONE
  TZID:America/Los_Angeles
  BEGIN:STANDARD
  DTSTART:20071104T020000
  RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=1SU
  TZOFFSETFROM:-0700
  TZOFFSETTO:-0800
  TZNAME:HNP
  END:STANDARD
  BEGIN:DAYLIGHT
  DTSTART:20070311T020000
  RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=2SU
  TZOFFSETFROM:-0800
  TZOFFSETTO:-0700
  TZNAME:HAP
  END:DAYLIGHT
  END:VTIMEZONE
  BEGIN:VEVENT
  STATUS:CONFIRMED
  LAST-MODIFIED:20120813T184814Z
  DTSTAMP:20120813T184814Z
  UID:4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz
  SEQUENCE:0
  CLASS:PUBLIC
  TRANSP:OPAQUE
  SUMMARY:test event
  DTSTART;TZID=America/Los_Angeles:20120815T103000
  DTEND;TZID=America/Los_Angeles:20120815T113000
  ATTENDEE;CN=John Doe;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:
   mailto:john.doe@example.com
  ORGANIZER;CN=Joan Doe:mailto:joan.doe@example.com
  END:VEVENT
  END:VCALENDAR
  ]
  Request sent; retry is 1.
  [status-line] &lt; HTTP/1.1 201 Created
  
  ...
  
  DELETE /caldav/v2/patrick.ohly.estamos%40googlemail.com/events/4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz.ics HTTP/1.1
  Connection: TE
  TE: trailers
  Host: apidata.googleusercontent.com
  Content-Length: 0
  User-Agent: SyncEvolution
  Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  
  Sending request-line and headers:
  Request sent; retry is 1.
  [status-line] &lt; HTTP/1.1 204 No Content
  
  ...
  
  PUT /caldav/v2/patrick.ohly.estamos%40googlemail.com/events/4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz.ics HTTP/1.1
  Connection: TE
  TE: trailers
  Host: apidata.googleusercontent.com
  Content-Length: 928
  Content-Type: text/calendar; charset=utf-8
  User-Agent: SyncEvolution
  Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  
  Sending request-line and headers:
  Sending request body:
  Body block (928 bytes):
  [BEGIN:VCALENDAR
  VERSION:2.0
  PRODID:-//Synthesis AG//NONSGML SyncML Engine V3.4.0.47//EN
  BEGIN:VTIMEZONE
  TZID:America/Los_Angeles
  BEGIN:STANDARD
  DTSTART:20071104T020000
  RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=1SU
  TZOFFSETFROM:-0700
  TZOFFSETTO:-0800
  TZNAME:HNP
  END:STANDARD
  BEGIN:DAYLIGHT
  DTSTART:20070311T020000
  RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=2SU
  TZOFFSETFROM:-0800
  TZOFFSETTO:-0700
  TZNAME:HAP
  END:DAYLIGHT
  END:VTIMEZONE
  BEGIN:VEVENT
  STATUS:CONFIRMED
  LAST-MODIFIED:20120813T184814Z
  DTSTAMP:20120813T184814Z
  UID:4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz
  SEQUENCE:0
  CLASS:PUBLIC
  TRANSP:OPAQUE
  SUMMARY:test event
  DTSTART;TZID=America/Los_Angeles:20120815T103000
  DTEND;TZID=America/Los_Angeles:20120815T113000
  ATTENDEE;CN=John Doe;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:
   mailto:john.doe@example.com
  ORGANIZER;CN=Joan Doe:mailto:joan.doe@example.com
  END:VEVENT
  END:VCALENDAR
  ]
  Request sent; retry is 1.
  [status-line] &lt; HTTP/1.1 404 Not Found
  </code></pre>