1. CalAtom

    Rob Yates and Dan Gurney

    Using the Atom Publishing Protocol for Calendaring

  2. Agenda

  3. Atom Introduction - Syndication

  4. Atom Introduction - Syndication

  5. Atom Introduction - Syndication

  6. Atom Introduction - Publishing

  7. Atom Introduction - Publishing

  8. Atom Introduction - Publishing

  9. Atom Introduction - Introspection

  10. What google did

  11. CalAtom

  12. CalAtom - creating a calendar event

    
    POST /calendar HTTP/1.1
    Content- Type: text/calendar
    ...
    
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:-//hacksw/handcal//NONSGML v1.0//EN
    BEGIN:VEVENT
    DTSTART:19970714T170000Z
    DTEND:19970715T035959Z
    SUMMARY:Bastille Day Party
    END:VEVENT
    END:VCALENDAR
    
    with response
    
    HTTP/1.1 201 Created
    Content- Type: application/atom+xml; charset="utf-8"
    Content- Location: http://example.org/calendar/1.atom
    Location: http://example.org/calendar/1.atom
    
    <entry xmlns="http://www.w3.org/2005/Atom">
     <title>Bastille Day Party</title>
     <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
     <updated>2003-12-13T18:30:02Z</updated>
     <author><name>John Doe</name></author>
     <summary type="text" />
     <content type="text/calendar" src=http://example.org/calendar/1.ics/>
     <link rel="edit" type="application/atom+xml" href="http://example.org/calendar/1.atom" />
     <link rel="edit-media" type="text/calendar" href="http://example.org/calendar/1.ics" />
     <link rel="alternate" type="application/calendar+xml" href="http://example.org/calendar/1.xml" /> <-- xCalendar represenation
     <link rel="edit-media" type="application/calendar+xml" href="http://example.org/calendar/1.xml" /> <-- xCalendar representation 
    </entry>
    
  13. CalAtom - updating a calendar event

    
    PUT /calendar/1.ics HTTP/1.1
    Content- Type: text/calendar
    ...
    
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:-//hacksw/handcal//NONSGML v1.0//EN
    BEGIN:VEVENT
    DTSTART:19970714T170000Z
    DTEND:19970715T035959Z
    SUMMARY:Bastille Day Party with an update
    END:VEVENT
    END:VCALENDAR
    
    with response
    
    HTTP/1.1 200 OK
    
    
  14. CalAtom - listing the events

    
    GET /calendar HTTP/1.1
    ...
    
    <feed xmlns="http://www.w3.org/2005/Atom">
      <title>My Calendar</title>
      <link href="http://example.org/calendar"/>
      <updated>2003-12-13T18:30:02Z</updated>
      <author>
        <name>John Doe</name>
      </author>
      <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
      <entry xmlns="http://www.w3.org/2005/Atom">
       <title>Bastille Day Party</title>
       <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
       <updated>2003-12-13T18:30:02Z</updated>
       <author><name>John Doe</name></author>
       <summary type="text" />
       <content type="text/calendar" src=http://example.org/calendar/1.ics/>
       <link rel="edit" type="application/atom+xml" href="http://example.org/calendar/1.atom" />
       <link rel="edit-media" type="text/calendar" href="http://example.org/calendar/1.ics" />
       <link rel="alternate" type="application/calendar+xml" href="http://example.org/calendar/1.xml" />
       <link rel="edit-media" type="application/calendar+xml" href="http://example.org/calendar/1.xml" />
      </entry>
      <entry xmlns="http://www.w3.org/2005/Atom">
       <title>Queens Birthday Party</title>
       <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efb6a</id>
       <updated>2003-12-13T18:30:02Z</updated>
       <author><name>John Doe</name></author>
       <summary type="text" />
       <content type="text/calendar" src=http://example.org/calendar/2.ics/>
       <link rel="edit" type="application/atom+xml" href="http://example.org/calendar/2.atom" />
       <link rel="edit-media" type="text/calendar" href="http://example.org/calendar/2.ics" />
       <link rel="alternate" type="application/calendar+xml" href="http://example.org/calendar/2.xml" />
       <link rel="edit-media" type="application/calendar+xml" href="http://example.org/calendar/2.xml" />
      </entry>
     </feed>
    
    
  15. CalAtom - Querying Requirements

  16. CalAtom - Querying - An Approach

  17. CalAtom - ex of fanned out feed

    
    GET /calendar/fanned HTTP/1.1
    ...
    
    <feed xmlns="http://www.w3.org/2005/Atom">
      <title>My Calendar</title>
      <link href="http://example.org/calendar"/>
      <updated>2003-12-13T18:30:02Z</updated>
      <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
      <entry>
       <title>Bastille Day Party</title>
       <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
       <updated>2003-12-13T18:30:02Z</updated>
       <author><name>John Doe</name></author>
       <summary type="text" />
       <content type="application/calendar+xml">
        <vcalendar version="2.0" prodid="-//hacksw/handcal//NONSGML 1.0//EN"> <--- fanned out
         <vevent>
          <uid>19970901T130000Z-123401@host.com</uid>
          <dtstamp>19970901T130000Z</dtstamp>
          <dtstart>19970903T163000Z</dtstart>
          <dtend>19970903T190000Z</dtend>
          <summary>Bastille Day</summary>
          <class>PRIVATE</class>
         </vevent>
       </vcalendar>
       </content>
       <link rel="alternate" type="text/calendar" href="http://example.org/calendar/1.ics" />   <-- editable representations
       <link rel="edit-media" type="text/calendar" href="http://example.org/calendar/1.ics" />      repeat parent (if applicable)
       <link rel="alternate" type="application/calendar+xml" href="http://example.org/calendar/1.xml" />
       <link rel="edit-media" type="application/calendar+xml" href="http://example.org/calendar/1.xml" />
      </entry>
      <entry>
       <title>Queens Birthday Party</title>
       <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efb6a</id>
       ...
      </entry>
     </feed>
    
    
  18. CalAtom - query

  19. CalAtom - query examples

  20. Why CalAtom?