iTIP introduction
iTIP (iCalendar Transport-Independent Interoperability Protocol), defined in RFC 5546, specifies how to use iCalendar objects for group scheduling. It defines the semantics of scheduling operations — requests, replies, cancellations, and counter-proposals — independent of the transport mechanism (iMIP, CalDAV scheduling, or others).
The Organiser-Attendee Model
iTIP centers on an organiser who owns a calendar component (typically VEVENT) and one or more attendees. The organiser is responsible for:
- Creating the initial event and sending invitations
- Processing attendee replies and updating the event state
- Sending updates when the event changes
- Cancelling the event when needed
Each attendee has a participation status (PARTSTAT): NEEDS-ACTION, ACCEPTED, DECLINED, TENTATIVE, or DELEGATED. Attendees send replies to update their status.
Scheduling Methods
iTIP defines six methods, carried in the METHOD property of the iCalendar object:
| Method | Purpose |
|---|---|
PUBLISH |
Broadcast an event (no replies expected) |
REQUEST |
Invite attendees to an event |
REPLY |
Respond to a REQUEST with attendance status |
ADD |
Add new instances to a recurring event |
CANCEL |
Cancel an event or remove attendees |
REFRESH |
Request a current copy of an event |
COUNTER |
Propose changes to an event (counter-offer) |
DECLINECOUNTER |
Reject a counter-proposal |
Workflow Example
- Organiser sends a
REQUESTwithMETHOD:REQUESTcontaining theVEVENTandATTENDEElist. - Attendee receives the request, decides to attend, and sends a
REPLYwithPARTSTAT:ACCEPTED. - Organiser receives the reply and updates their copy of the event with the attendee’s status.
- If the event changes, the organiser sends a new
REQUESTwith an incrementedSEQUENCEnumber. - To cancel, the organiser sends a
CANCELwithMETHOD:CANCEL.
Key Properties
UID— Uniquely identifies the scheduling object across all messages.SEQUENCE— Monotonically increasing counter for updates. Attendees must ignore messages with lower sequence numbers.RECurrence-ID— Identifies a specific instance of a recurring event being modified.ATTENDEE— IncludesROLE,RSVP, andPARTSTATparameters to track participation.