uid plus only the fields you want to change; every field you omit keeps its stored value. Rescheduling a meeting is uid + start. Renaming one is uid + title. Nothing you don’t mention is touched — a recurring series stays recurring, attendees invited elsewhere stay invited, the location survives.
There is no full-replacement mode. Because omission means “keep”, clearing a field needs an explicit empty value:
A call that names no changeable field at all (just a
uid) is rejected.
Times. An explicit end always wins. Omitting end while moving start keeps the event’s stored duration — “push the standup an hour later” is a two-field call and won’t silently stretch the meeting. Omitting both keeps the stored time.
Attendees. attendees replaces the whole list. addedAttendees / removedAttendees change specific addresses against the stored list instead, so you can drop one person without reading the list back first. They cannot be combined with attendees.
One occurrence. Pass recurrenceId (the occurrence’s original start) to change a single occurrence of a repeating series; the master rule and every other occurrence stay unchanged. Omitted fields merge against that occurrence’s stored state — an override you wrote earlier if there is one, otherwise the occurrence’s own slot — so re-editing a moved occurrence never drags it back to the series’ time. Attendee deltas cannot be combined with recurrenceId (membership is a property of the series).
By default the attendees are re-notified by iMIP. Pass notify: "none" to make the edit silent — useful for a trivial change such as dropping your own duplicate address.
Parameters
All parameters ofcreate_calendar_event, each of them optional here, plus the fields below.
string
required
The event’s iCalendar UID, from
create_calendar_event or list_calendar_events. Up to 255 characters; must not contain path separators.string[]
The complete attendee list after the edit, replacing the stored one.
[] uninvites everyone and turns the event into a personal one. Omit to keep the stored attendees.string[]
Email addresses to invite on top of the stored attendees. Cannot be combined with
attendees.string[]
Email addresses to uninvite, matched case-insensitively against the stored attendees. Removing an address that isn’t invited is a no-op. Cannot be combined with
attendees.string | object
New repeat rule for the whole series, in the same shape
create_calendar_event takes. The literal string "none" collapses the series to a single event. Omit to keep the stored rule.string
default:"all"
all re-sends invitations/updates to the attendees; none makes the edit silent (the attendees on the event are not notified). A removed attendee may still receive a cancellation.string
ISO 8601 instant naming one occurrence of a repeating series (its original start) to change in isolation. Cannot be combined with
recurrence or with attendee deltas.Examples
Reschedule a meeting an hour later, keeping its length, attendees, title and recurrence:Call
Result
Call
Result
Call
Result
Errors
Nothing to update: …— the call named no changeable field.Event not found: <uid>— no event with that UID in the target calendar.Event end must be after its start.Calendar not found: <url>— thecalendarUrldidn’t resolve.Removing those attendees would leave the event with none.— a delta removed the last attendee. To strip every attendee deliberately, passattendees: []instead.recurrenceId … does not match an occurrence of this series— the instant must equal an occurrence’s original start.
- Individually-customized occurrences. A whole-event edit would flatten them. Edit the occurrence directly with
recurrenceId, or re-specify the whole event (start,end,title,attendeesandrecurrence) to deliberately replace the series — note that this escape hatch does discard the customizations. - Cancelled occurrences. A series with an occurrence cancelled via
delete_calendar_eventcan’t be edited as a whole event: the rebuild would restore the cancelled instance and re-invite everyone to it. - An attendee stored in a non-email address format. Pass the complete
attendeeslist instead. - An all-day event with no explicit time. Pass
startandend. - A moved series that contradicts its repeat rule. Moving
startonto a weekday the kept rule doesn’t list (e.g. a Friday underBYDAY=TU) would add one occurrence rather than move the series. Passrecurrencewith the new rule as well.
What an edit still does not preserve
A whole-event edit rebuilds the VEVENT, which resets attendee response status (PARTSTAT) to needs-action and drops any reminders (VALARM) the event carried. This predates partial updates and applies to every edit, including a one-field one.