Worked examples

A invites B

  1. A's client software is configured to use foo.com's iCalendar server

  2. A uses her client to create an event, list attendees, etc

  3. A hits "OK" after setting up the event

  4. A's client records the event in its local database

  5. A's client generates an iCalendar object and sends it to foo.com's iCalendar server

  6. The event is stored in foo.com's iCalendar server

  7. When B next syncs, he receives notification of the event

  8. B accepts (or declines) the invitation and clicks OK

  9. If B accepts, the event is stored in the client's local database

  10. B's client connects to foo.com's iCalendar server and sends the response

  11. The response is stored in foo.com's iCalendar server

  12. When A next syncs, she receives the response.

  13. Final state: A and B both have the event in their local clients' databases, and the foo.com iCalendar server is also aware of the event

A invites C

  1. Steps 1-5 as for the previous example

  2. The event is stored in foo.com's iCalendar server under A's name

  3. However, foo.com's iCalendar server recognises that c@bar.com is not a local user

  4. foo.com's iCalendar server generates an email with a text/calendar attachment and sends it to c@bar.com

  5. C receives an email inviting her to an event with A

  6. When C opens the attachment, it is loaded using C's preferred iCalendar client

  7. C accepts (or declines) the invitation and clicks OK

  8. If C accepts, the event is stored in the client's local database

  9. C's client connects to bar.com's iCalendar server and sends the response

  10. The event is recorded in bar.com's iCalendar server under C's name

  11. The server recognises that a@foo.com is not a local user and generates an email with a text/calendar attachment, then sends it

  12. A receives an email with the response

  13. When A opens the attachment, it comes up in A's iCalendar client

  14. A looks it over, clicks "OK, and it's recorded in A's client's local database

  15. When A next syncs, the results are uploaded to foo.com's iCalendar server

  16. Final state: A and C both have the event in their local clients' databases, and both the foo.com and bar.com iCalendar servers are aware of the event

A invites E

  1. As above, up to the point that E accepts and clicks OK

  2. Since E has no iCalendar server, E's iCalendar client directly generates an email with a text/calendar attachment and sends it back to a@foo.com via baz.net's mail server

  3. A receives the email, and continues as for the previous example

  4. Final state: A and E have the event in their local client database, and it also exists on foo.com's server

E invites A

  1. E generates the event, which is sent to A via email

  2. A acknowledges the invitation, clicks OK, and it goes up to foo.com's iCalendar server

  3. foo.com's iCalendar server realises that e@baz.net is not local and emails the response

  4. E receives the response and clicks OK to save it locally

  5. Final state: as for previous example

A invites F

  1. As for "A invites E" up until the point that F receives the email

  2. F has no client, so merely reads the textual part of the message

  3. F responds manually by email to A

  4. A reads the email, and notes the response manually in her iCalendar client

  5. The results are sync'd up to foo.com's server in due course

  6. Final state: A has the event in her local client database and it exists in foo.com's server. However, F has the event written down on a bit of paper or something.