Network Working Group September 29, 2006 Internet-Draft Intended status: Standards Track Expires: April 2, 2007 CalAtom draft-yates-atompub-calatom-00.txt Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on April 2, 2007. Copyright Notice Copyright (C) The Internet Society (2006). Abstract CalAtom provides a remote api for calendars. It utilizes the Atom Publishing Protocol and xcal. Expires April 2, 2007 [Page 1] Internet-Draft CalAtom September 2006 Table of Contents 1. Requirements notation . . . . . . . . . . . . . . . . . . . . 3 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. CalAtom Collections . . . . . . . . . . . . . . . . . . . . . 3 4. Service Document in CalAtom . . . . . . . . . . . . . . . . . 3 4.1. Example . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.2. Element Definitions . . . . . . . . . . . . . . . . . . . 4 4.2.1. The "f:feature" Element . . . . . . . . . . . . . . . 5 4.2.2. The "f:url" Element . . . . . . . . . . . . . . . . . 6 5. Creating and Editing Calendar Resources . . . . . . . . . . . 6 5.1. Creating Calendar Resources with POST . . . . . . . . . . 6 5.1.1. Example . . . . . . . . . . . . . . . . . . . . . . . 7 5.2. Modifying and Deleteing Calendar Resources . . . . . . . . 8 6. Date Range Search . . . . . . . . . . . . . . . . . . . . . . 8 6.1. URI Construction . . . . . . . . . . . . . . . . . . . . . 8 6.1.1. Example . . . . . . . . . . . . . . . . . . . . . . . 9 6.2. Search Response . . . . . . . . . . . . . . . . . . . . . 10 6.2.1. xcal Elements . . . . . . . . . . . . . . . . . . . . 11 7. Listing CalAtom Collection Members . . . . . . . . . . . . . . 11 7.1. Example . . . . . . . . . . . . . . . . . . . . . . . . . 11 8. Repeating Events . . . . . . . . . . . . . . . . . . . . . . . 13 9. Attachments . . . . . . . . . . . . . . . . . . . . . . . . . 13 10. Security Considerations . . . . . . . . . . . . . . . . . . . 13 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 12. Normative References . . . . . . . . . . . . . . . . . . . . . 13 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 13 Intellectual Property and Copyright Statements . . . . . . . . . . 14 Expires April 2, 2007 [Page 2] Internet-Draft CalAtom September 2006 1. Requirements notation The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. 2. Introduction The Atom Publishing Protocol (atompub) uses HTTP methods to edit and author Member Resources. Atompub Collections can contain Member Resources with representations of arbitrary media type. The Atom Publishing Protocol defines Media Resources and Media Link Entries to support the editing and authoring of Member Resources in media types other than application/atom+xml. This specification uses those constructs together with the "application/calendar+xml" media type (xcal) to provide a remote api for a Calendaring. The api has been designed to work with existing calendaring implementations. 3. CalAtom Collections This specification defines Calendar Atom Collections (alternatively referred to as CalAtom Collections). These collections allow for the editing and authoring of calendar data in its xcal representation and provide calendar specific query operations. CalAtom collections MUST support xcal representations of the calendar data. The xcal representations MUST contain one and only one VEVENT calendar component. Additionally the representation MUST NOT specify the iCalendar METHOD property. 4. Service Document in CalAtom For event management to occur, a client needs to first discover the capabilities and locations of the available CalAtom Collections. The ATOM Publishing Protocols Service Documents are designed to support this discovery process. In addition to providing the standard collection details in the Service document CalAtom collections MUST surface additional information to indicate calendar specific capabilities. Expires April 2, 2007 [Page 3] Internet-Draft CalAtom September 2006 4.1. Example Main Site My Calendar application/calendar+xml Pictures image/* 20060901T130000Z-123401@host.com 20060901T130000Z 20060903T163000Z 20060903T190000Z Annual Employee Review PRIVATE Business Human Resources The server signals a successful creation with a status code of 201. The response includes a Location header indicating the Member URI of the CalAtom Media Link Entry and a representation of that entry in the body of the response. The CalAtom Media Link Entry includes a content element with a src attribute, and a link using the link relation "edit-media" specifying the IRI to be used for modifying the xcal Media Resource. Expires April 2, 2007 [Page 7] Internet-Draft CalAtom September 2006 HTTP/1.1 201 Created Date: Fri, 7 Oct 2005 17:17:11 GMT Content-Length: nnn Content-Type: application/atom+xml; charset="utf-8" Content-Location: http://example.org/calendar/edit/1 Location: http://example.org/calendar/edit/1 Annual Employee Review urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a 2005-10-07T17:17:08Z Daffy 5.2. Modifying and Deleteing Calendar Resources CalAtom Media Link Entries i.e. entries that reference calendar resources in CalAtom collections MUST contain an "edit-media" link relation specifying the IRI to be used for modifying or deleting the resource. GET, PUT and DELETE operations as described in atompub section 5.4 can then be used to view or manipulate the resource. CalAtom collections MUST provide an "edit-media" link relation with media-type application/calendar+xml and MAY provide alternative represenations. 6. Date Range Search Calendar applications most frequently display calendar events for a given date range. The "Date Range Search" allows a client to provide the ranges start and end dates and returns the results in an atom feed format. 6.1. URI Construction CalAtom collections MUST provide a "Date Range Search" URI template in the Atom Service Document. Clients MUST replace the parameters in this template to construct a URI. Two parameters in the URI template are replaceable i.e. "ca: startdate" and "ca:enddate". These two parameters indicate a date range. When substituted the constructed URI is dereferenceable and Expires April 2, 2007 [Page 8] Internet-Draft CalAtom September 2006 the server response MUST include CalAtom Media Link Entries that reference a Calendar resource with an event who's start and end time overlap the provided date range. 6.1.1. Example In the following example the client requests all events that occur in the month of September 2006. The atompub introspection document contains the following URI Template "http://example.org/reilly/ calendar?startdate={ca:startdate}&enddate={ca:enddate}". GET /reilly/calendar ?startdate=200609001T000000Z&enddate=200609001T115959Z HTTP/1.1 Host: example.org User-Agent: Thingio/1.0 Accept: application/atom+xml The client has substituted the parameters{ca:startdate} and {ca: enddate}. The server responds with the results in Atom Feed format. Expires April 2, 2007 [Page 9] Internet-Draft CalAtom September 2006 HTTP/1.1 200 OK Date: Fri, 7 Oct 2005 17:17:11 GMT Content-Length: nnn Content-Type: application/atom+xml; charset="utf-8" Calendar Events 2003-12-13T18:30:02Z urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6 Annual Employee Review 20060901T130000Z 20060903T190000Z urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a 2005-10-07T17:17:08Z Daffy Annual Manger Review 20060902T130000Z 20060902T190000Z urn:uuid:1225c645-cfb8-4ebb-aaaa-80da344efa6a 2005-10-07T17:17:08Z Daffy The response contains two events, "Annual Employee Review" and "Annual Manager Review" both occuring in September 06. The CalAtom Media Link Entries in the response also contain the "xcal:dtstart" and "xcal:dtend" elements. 6.2. Search Response The Date Range Search Response MUST provide representations in the form of Atom Feed documents whose CalAtom media entries represent the Expires April 2, 2007 [Page 10] Internet-Draft CalAtom September 2006 Calendar Resources that qualify. Each entry in the Feed Document SHOULD have an atom:link element with a relation of "edit-media". The Search Response MAY be paged, see section 10.1 atompub. 6.2.1. xcal Elements The CalAtom media entries in the Date Range Search Response MUST contain the following xcal elements as immediate children of the "atom:entry" when the elements exist in the corresponding Calendar Resource, "xcal:location", "xcal:dtstart", "xcal:dtend", "xcal: status", "xcal:organizer". 7. Listing CalAtom Collection Members CalAtom collections MUST respond to GET requests with a member listing as outlined in atompub section 10. Typically atom clients use this default listing as their primary listing. CalAtom clients however will normally use the "Date Range Query" as their primary listing of events. It is, however, expected that the default collection listing will be used to "synch" calendar clients with the server. Therefore in the default collection listing CalAtom Media Entries SHOULD contain a full inline representation of the Media Resource in media type application/calendar+xml. The listing SHOULD also be paged. 7.1. Example Below is a sample default listing of a CalAtom Collection that contains two events. GET /reilly/calendar Host: example.org User-Agent: Thingio/1.0 Accept: application/atom+xml The server responds as follows. HTTP/1.1 200 OK Date: Fri, 7 Oct 2005 17:17:11 GMT Content-Length: nnn Content-Type: application/atom+xml; charset="utf-8" Calendar Events 2003-12-13T18:30:02Z urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6 Expires April 2, 2007 [Page 11] Internet-Draft CalAtom September 2006 Annual Employee Review urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a 2005-10-07T17:17:08Z Daffy 20060901T130000Z-123401@host.com 20060901T130000Z 20060903T163000Z 20060903T190000Z Annual Employee Review PRIVATE Business Human Resources Annual Manger Review urn:uuid:1225c645-cfb8-4ebb-aaaa-80da344efa6a 2005-10-07T16:17:08Z Daffy 20060901T130000Z-123401@host.com 20060901T130000Z 20060903T163000Z 20060903T190000Z Annual Manager Review PRIVATE Business Expires April 2, 2007 [Page 12] Internet-Draft CalAtom September 2006 Human Resources 8. Repeating Events tbd. 9. Attachments tbd. 10. Security Considerations tbd. 11. Acknowledgements Portions of the atompub specification have been included and adapted 12. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. Author's Address Expires April 2, 2007 [Page 13] Internet-Draft CalAtom September 2006 Full Copyright Statement Copyright (C) The Internet Society (2006). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Acknowledgment Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA). Expires April 2, 2007 [Page 14]