| draft-ietf-atompub-protocol-06.txt | | draft-ietf-atompub-protocol-07.txt | |
| | | | |
| Network Working Group J. Gregorio, Ed. | | Network Working Group J. Gregorio, Ed. | |
| Internet-Draft BitWorking, Inc | | Internet-Draft BitWorking, Inc | |
| Expires: April 30, 2006 B. de hOra, Ed. | | Expires: July 5, 2006 B. de hOra, Ed. | |
| Propylon Ltd. | | Propylon Ltd. | |
| October 27, 2005 | | January 01, 2006 | |
| | | | |
| The Atom Publishing Protocol | | The Atom Publishing Protocol | |
| draft-ietf-atompub-protocol-06.txt | | draft-ietf-atompub-protocol-07.txt | |
| | | | |
| Status of this Memo | | Status of this Memo | |
| | | | |
| By submitting this Internet-Draft, each author represents that any | | By submitting this Internet-Draft, each author represents that any | |
| applicable patent or other IPR claims of which he or she is aware | | 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 | | 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. | | aware will be disclosed, in accordance with Section 6 of BCP 79. | |
| | | | |
| Internet-Drafts are working documents of the Internet Engineering | | Internet-Drafts are working documents of the Internet Engineering | |
| Task Force (IETF), its areas, and its working groups. Note that | | Task Force (IETF), its areas, and its working groups. Note that | |
| | | | |
| skipping to change at page 1, line 35 | | skipping to change at page 1, line 35 | |
| and may be updated, replaced, or obsoleted by other documents at any | | and may be updated, replaced, or obsoleted by other documents at any | |
| time. It is inappropriate to use Internet-Drafts as reference | | time. It is inappropriate to use Internet-Drafts as reference | |
| material or to cite them other than as "work in progress." | | material or to cite them other than as "work in progress." | |
| | | | |
| The list of current Internet-Drafts can be accessed at | | The list of current Internet-Drafts can be accessed at | |
| http://www.ietf.org/ietf/1id-abstracts.txt. | | http://www.ietf.org/ietf/1id-abstracts.txt. | |
| | | | |
| The list of Internet-Draft Shadow Directories can be accessed at | | The list of Internet-Draft Shadow Directories can be accessed at | |
| http://www.ietf.org/shadow.html. | | http://www.ietf.org/shadow.html. | |
| | | | |
| This Internet-Draft will expire on April 30, 2006. | | This Internet-Draft will expire on July 5, 2006. | |
| | | | |
| Copyright Notice | | Copyright Notice | |
| | | | |
| Copyright (C) The Internet Society (2005). | | Copyright (C) The Internet Society (2006). | |
| | | | |
| Abstract | | Abstract | |
| | | | |
| The Atom Publishing Protocol (APP) is an application-level protocol | | The Atom Publishing Protocol (APP) is an application-level protocol | |
| for publishing and editing Web resources. The protocol is based on | | for publishing and editing Web resources. The protocol is based on | |
| HTTP transport of Atom-formatted representations. The Atom format is | | HTTP transport of Atom-formatted representations. The Atom format is | |
| documented in the Atom Syndication Format | | documented in the Atom Syndication Format (RFC4287). | |
| (draft-ietf-atompub-format-11.txt). | | | |
| | | | |
| Editorial Note | | Editorial Note | |
| To provide feedback on this Internet-Draft, join the atom-protocol | | To provide feedback on this Internet-Draft, join the atom-protocol | |
| mailing list (http://www.imc.org/atom-protocol/index.html) [1]. | | mailing list (http://www.imc.org/atom-protocol/index.html) [1]. | |
| | | | |
| Table of Contents | | Table of Contents | |
| | | | |
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |
| 2. Notational Conventions . . . . . . . . . . . . . . . . . . . 5 | | 2. Notational Conventions . . . . . . . . . . . . . . . . . . . 5 | |
| 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 6 | | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 6 | |
| 4. Protocol Model . . . . . . . . . . . . . . . . . . . . . . . 7 | | 4. Protocol Model . . . . . . . . . . . . . . . . . . . . . . . 7 | |
| 5. Protocol Operations . . . . . . . . . . . . . . . . . . . . 8 | | 5. Protocol Operations . . . . . . . . . . . . . . . . . . . . 8 | |
| 5.1 Retrieving an Introspection Document . . . . . . . . . . . 8 | | 5.1 Retrieving an Introspection Document . . . . . . . . . . . 8 | |
| 5.2 Creating a Resource . . . . . . . . . . . . . . . . . . . 8 | | 5.2 Creating a Resource . . . . . . . . . . . . . . . . . . . 8 | |
| 5.3 Editing a Resource . . . . . . . . . . . . . . . . . . . . 8 | | 5.3 Editing a Resource . . . . . . . . . . . . . . . . . . . . 8 | |
| 5.3.1 Retrieving a Resource . . . . . . . . . . . . . . . . 9 | | 5.3.1 Retrieving a Resource . . . . . . . . . . . . . . . . 9 | |
| 5.3.2 Updating a Resource . . . . . . . . . . . . . . . . . 9 | | 5.3.2 Updating a Resource . . . . . . . . . . . . . . . . . 9 | |
| 5.3.3 Deleting a Resource . . . . . . . . . . . . . . . . . 9 | | 5.3.3 Deleting a Resource . . . . . . . . . . . . . . . . . 9 | |
| 5.4 Listing Collections . . . . . . . . . . . . . . . . . . . 10 | | 5.4 Listing Collection Members . . . . . . . . . . . . . . . . 10 | |
| 5.5 Success and Failure . . . . . . . . . . . . . . . . . . . 10 | | 5.5 Use of HTTP Response codes . . . . . . . . . . . . . . . . 10 | |
| 6. XML-related Conventions . . . . . . . . . . . . . . . . . . 11 | | 6. XML-related Conventions . . . . . . . . . . . . . . . . . . 11 | |
| 6.1 Referring to Information Items . . . . . . . . . . . . . . 11 | | 6.1 Referring to Information Items . . . . . . . . . . . . . . 11 | |
| 6.2 XML Namespace Usage . . . . . . . . . . . . . . . . . . . 11 | | 6.2 XML Namespace Usage . . . . . . . . . . . . . . . . . . . 11 | |
| 6.3 RELAX NG Schema . . . . . . . . . . . . . . . . . . . . . 11 | | 6.3 Use of xml:base and xml:lang . . . . . . . . . . . . . . . 11 | |
| 6.4 Use of xml:base and xml:lang . . . . . . . . . . . . . . . 11 | | 6.4 RELAX NG Schema . . . . . . . . . . . . . . . . . . . . . 12 | |
| 7. Introspection Documents . . . . . . . . . . . . . . . . . . 13 | | 7. Introspection Documents . . . . . . . . . . . . . . . . . . 13 | |
| 7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . 13 | | 7.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |
| 7.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . 13 | | 7.2 Element Definitions . . . . . . . . . . . . . . . . . . . 14 | |
| 7.3 Element Definitions . . . . . . . . . . . . . . . . . . . 14 | | 7.2.1 The "app:service" Element . . . . . . . . . . . . . . 14 | |
| 7.3.1 The 'app:service' Element . . . . . . . . . . . . . . 14 | | 7.2.2 The "app:workspace" Element . . . . . . . . . . . . . 14 | |
| 7.3.2 The 'app:workspace' Element . . . . . . . . . . . . . 14 | | 7.2.3 The "app:collection" Element . . . . . . . . . . . . . 15 | |
| 7.3.3 The 'app:collection' Element . . . . . . . . . . . . . 15 | | 7.2.4 The "app:member-type" Element . . . . . . . . . . . . 15 | |
| 7.3.4 The 'app:member-type' Element . . . . . . . . . . . . 15 | | 8. Collections . . . . . . . . . . . . . . . . . . . . . . . . 17 | |
| 7.3.5 The 'app:list-template' Element . . . . . . . . . . . 16 | | 8.1 Creating resources with POST . . . . . . . . . . . . . . . 17 | |
| 8. Collections . . . . . . . . . . . . . . . . . . . . . . . . 18 | | 8.1.1 Example . . . . . . . . . . . . . . . . . . . . . . . 17 | |
| 8.1 Creating resources with POST . . . . . . . . . . . . . . . 18 | | 8.1.2 Title: Header . . . . . . . . . . . . . . . . . . . . 17 | |
| 8.1.1 Title: Header . . . . . . . . . . . . . . . . . . . . 18 | | 8.2 Entry Collections . . . . . . . . . . . . . . . . . . . . 18 | |
| 8.2 Entry Collections . . . . . . . . . . . . . . . . . . . . 19 | | 8.3 Media Collections . . . . . . . . . . . . . . . . . . . . 18 | |
| 8.2.1 Role of Atom Entry Elements During Editing . . . . . . 19 | | 8.3.1 Editing Media Resources . . . . . . . . . . . . . . . 18 | |
| 8.3 Media Collections . . . . . . . . . . . . . . . . . . . . 20 | | 9. Listing Collections . . . . . . . . . . . . . . . . . . . . 19 | |
| 8.3.1 Editing Media Resources . . . . . . . . . . . . . . . 20 | | 9.1 Collection Paging . . . . . . . . . . . . . . . . . . . . 19 | |
| 9. Listing Collections . . . . . . . . . . . . . . . . . . . . 21 | | 10. Atom Format Link Relation Extensions . . . . . . . . . . . . 21 | |
| 10. Atom Entry Extensions . . . . . . . . . . . . . . . . . . . 23 | | 10.1 The "edit" Link Relation . . . . . . . . . . . . . . . . 21 | |
| 10.1 The 'edit' Link Relation . . . . . . . . . . . . . . . . 23 | | 11. Atom Publishing Control Extensions . . . . . . . . . . . . . 22 | |
| 10.2 Publishing Control . . . . . . . . . . . . . . . . . . . 23 | | 11.1 The Atom Publishing Control Namespace . . . . . . . . . 22 | |
| 10.2.1 The app:draft Element . . . . . . . . . . . . . . . 24 | | 11.2 The "pub:control" Element . . . . . . . . . . . . . . . 22 | |
| 11. Example . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | | 11.2.1 The "pub:draft" Element . . . . . . . . . . . . . . 22 | |
| 12. Securing the Atom Protocol . . . . . . . . . . . . . . . . . 27 | | 12. Atom Publishing Protocol Example . . . . . . . . . . . . . . 23 | |
| 13. Security Considerations . . . . . . . . . . . . . . . . . . 28 | | 13. Securing the Atom Protocol . . . . . . . . . . . . . . . . . 25 | |
| 14. IANA Considerations . . . . . . . . . . . . . . . . . . . . 29 | | 14. Security Considerations . . . . . . . . . . . . . . . . . . 26 | |
| 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 31 | | 15. IANA Considerations . . . . . . . . . . . . . . . . . . . . 27 | |
| 15.1 Normative References . . . . . . . . . . . . . . . . . . 31 | | 16. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |
| 15.2 Informative References . . . . . . . . . . . . . . . . . 32 | | 16.1 Normative References . . . . . . . . . . . . . . . . . . 29 | |
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 33 | | 16.2 Informative References . . . . . . . . . . . . . . . . . 30 | |
| A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 34 | | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 31 | |
| B. RELAX NG Compact Schema . . . . . . . . . . . . . . . . . . 35 | | A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 32 | |
| C. Revision History . . . . . . . . . . . . . . . . . . . . . . 38 | | B. RELAX NG Compact Schema . . . . . . . . . . . . . . . . . . 33 | |
| Intellectual Property and Copyright Statements . . . . . . . 40 | | C. Revision History . . . . . . . . . . . . . . . . . . . . . . 36 | |
| | | Intellectual Property and Copyright Statements . . . . . . . 39 | |
| | | | |
| 1. Introduction | | 1. Introduction | |
| | | | |
| The Atom Publishing Protocol is an application-level protocol for | | The Atom Publishing Protocol is an application-level protocol for | |
| publishing and editing Web resources using HTTP [RFC2616] and XML 1.0 | | publishing and editing Web resources using HTTP [RFC2616] and XML 1.0 | |
| [W3C.REC-xml-20040204]. The protocol supports the creation of | | [W3C.REC-xml-20040204]. The protocol supports the creation of | |
| arbitrary web resources and provides facilities for: | | arbitrary web resources and provides facilities for: | |
| | | | |
| o Collections: Sets of resources, which may be retrieved in whole or | | o Collections: Sets of resources, which may be retrieved in whole or | |
| in part. | | in part. | |
| | | | |
| skipping to change at page 6, line 7 | | skipping to change at page 6, line 7 | |
| document are to be interpreted as described in [RFC2119]. | | document are to be interpreted as described in [RFC2119]. | |
| | | | |
| Note: The Introspection Document allows the use of IRIs [RFC3987], as | | Note: The Introspection Document allows the use of IRIs [RFC3987], as | |
| well as URIs [RFC3986]. Every URI is an IRI, so any URI can be used | | well as URIs [RFC3986]. Every URI is an IRI, so any URI can be used | |
| where an IRI is needed. How to map an IRI to a URI is specified in | | where an IRI is needed. How to map an IRI to a URI is specified in | |
| Section 3.1 of Internationalized Resource Identifiers (IRIs) | | Section 3.1 of Internationalized Resource Identifiers (IRIs) | |
| [RFC3987]. | | [RFC3987]. | |
| | | | |
| 3. Terminology | | 3. Terminology | |
| | | | |
| For convenience, this protocol may be referred to as "Atom Protocol" | | For convenience, this protocol may be referred to as the "Atom | |
| or "APP". | | Protocol" or "APP". | |
| | | | |
| | | URI/IRI - A Uniform Resource Identifier and Internationalized | |
| | | Resource Identifier. These terms and the distinction between them | |
| | | are defined in [RFC3986] and [RFC3987]. | |
| | | | |
| | | Resource - A network-accessible data object or service identified by | |
| | | an IRI, as defined in [RFC2616]. See [W3C.REC-webarch-20041215] for | |
| | | further discussion on resources. | |
| | | | |
| The phrase "the IRI of a document" in this specification is shorthand | | The phrase "the IRI of a document" in this specification is shorthand | |
| for "an IRI which, when dereferenced, is expected to produce that | | for "an IRI which, when dereferenced, is expected to produce that | |
| document as a representation". | | document as a representation". | |
| | | | |
| URI/IRI - A Uniform Resource Identifier and Internationalized | | Representation - An entity included with a request or response as | |
| Resource Identifier, respectively. These terms (and the distinction | | | |
| between them) are defined in [RFC3986] and [RFC3987]. | | | |
| | | | |
| resource - A network data object or service that can be identified | | | |
| by a IRI, as defined in [RFC2616]. See [W3C.REC-webarch-20041215] | | | |
| for further discussion on resources. | | | |
| | | | |
| representation - An entity included with a request or response as | | | |
| defined in [RFC2616]. | | defined in [RFC2616]. | |
| | | | |
| collection - A resource that contains a set of member IRIs, as | | Collection - A resource that contains a set of member IRIs. See | |
| described in Section 8 of this specification. | | Section 8. | |
| | | | |
| member - A resource whose IRI is listed in a collection. | | | |
| | | | |
| IRI template - A parameterized string that becomes a IRI when the | | | |
| parameters are filled in. See Section 9. | | | |
| | | | |
| introspection document - A document that describes the location and | | | |
| capabilities of one or more collections. See Section 7 | | | |
| | | | |
| client writable element - An element of an Atom Entry whose value is | | Member - A resource whose IRI is listed in a Collection. | |
| editable by the client and not enforced by the server. | | | |
| | | | |
| server-controlled element - An element of an Atom Entry whose value | | Introspection Document - A document that describes the location and | |
| is enforced by the server and not editable by the client. | | capabilities of one or more Collections. See Section 7. | |
| | | | |
| 4. Protocol Model | | 4. Protocol Model | |
| | | | |
| The Atom Publishing Protocol uses HTTP to edit resources on the web. | | The Atom Publishing Protocol uses HTTP to edit and author web | |
| It provides a list based mechanism for managing collections of | | resources. The Atom Protocol uses the following HTTP methods: | |
| editable resources called member resources. Collections contain the | | | |
| IRIs and metadata describing member resources. The APP uses these | | | |
| HTTP verbs: | | | |
| | | | |
| o GET is used to retrieve a representation of a resource or perform | | o GET is used to retrieve a representation of a resource or perform | |
| a query. | | a query. | |
| | | | |
| o POST is used to create a new, dynamically-named resource. | | o POST is used to create a new, dynamically-named resource. | |
| | | | |
| o PUT is used to update a known resource. | | o PUT is used to update a known resource. | |
| | | | |
| o DELETE is used to remove a resource. | | o DELETE is used to remove a resource. | |
| | | | |
| This diagram shows the APP model: | | Along with operations on resources, the Atom Protocol provides list- | |
| | | based structures, called Collections, for managing and organising | |
| +---------------+ | | resources, called Members. Collections contain the IRIs of, and | |
| | Introspection | +------------+ | | metadata about, their Member resources. For authoring and editing of | |
| | |-->| Collection | | | resources to commence, an Atom Protocol client can examine server- | |
| +---------------+ | | | | defined groups of Collections, called Introspection Documents. | |
| | | +--------+ | | | |
| | |-->| Member | | | | |
| | | +--------+ | | | |
| | | | | | |
| | | . | | | |
| | | . | | | |
| | | . | | | |
| | | | | | |
| | | +--------+ | | | |
| | |-->| Member | | | | |
| | | +--------+ | | | |
| | | | | | |
| +------------+ | | | |
| | | | |
| The introspection document contains the IRIs of one or more | | | |
| collections. A collection contains IRIs and metadata describing | | | |
| member resources. The protocol allows editing of resources with | | | |
| representations of any media-type. Some types of collections are | | | |
| specialized and restrict the resource representations of their | | | |
| members. | | | |
| | | | |
| 5. Protocol Operations | | 5. Protocol Operations | |
| | | | |
| 5.1 Retrieving an Introspection Document | | 5.1 Retrieving an Introspection Document | |
| | | | |
| Client Server | | Client Server | |
| | | | | | | | |
| | 1.) GET to IRI of Introspection Document | | | | 1.) GET to IRI of Introspection Document | | |
| |------------------------------------------>| | | |------------------------------------------>| | |
| | | | | | | | |
| | 2.) Introspection Document | | | | 2.) Introspection Document | | |
| |<------------------------------------------| | | |<------------------------------------------| | |
| | | | | | | | |
| | | | |
| 1. The client sends a GET request to the IRI of the introspection | | 1. The client sends a GET request to the IRI of the Introspection | |
| document. | | Document. | |
| | | | |
| 2. The server responds with the introspection document which | | 2. The server responds with the document which enumerates the IRIs | |
| enumerates the IRIs of all the collections, and the capabilities | | of all the Collections and the capabilities of those Collections | |
| of those collections, that the service supports. | | supported by the server. The content of this document can vary | |
| | | based on aspects of the client request, including, but not | |
| | | limited to, authentication credentials. | |
| | | | |
| 5.2 Creating a Resource | | 5.2 Creating a Resource | |
| | | | |
| Client Server | | Client Server | |
| | | | | | | | |
| | 1.) POST to IRI of Collection | | | | 1.) POST to IRI of Collection | | |
| |------------------------------------------>| | | |------------------------------------------>| | |
| | | | | | | | |
| | 2.) 201 Created | | | | 2.) 201 Created | | |
| |<------------------------------------------| | | |<------------------------------------------| | |
| | | | | | | | |
| | | | |
| 1. The client POSTs a representation to the IRI of the collection. | | 1. The client POSTs a representation of the Member to the IRI of the | |
| | | collection. | |
| | | | |
| 2. If the member resource was created successfully the server | | 2. If the Member resource was created successfully, the server | |
| responds with a status code of 201 and a Location: header that | | responds with a status code of 201 and a Location: header that | |
| contains the IRI of the newly created member resource. | | contains the IRI of the newly created resource. | |
| | | | |
| 5.3 Editing a Resource | | 5.3 Editing a Resource | |
| | | | |
| Once a resource has been created and its IRI is known, that IRI may | | Once a resource has been created and its IRI is known, that IRI may | |
| be used to retrieve, update, and delete it. | | be used to retrieve, update, and delete the resource. | |
| | | | |
| 5.3.1 Retrieving a Resource | | 5.3.1 Retrieving a Resource | |
| | | | |
| Client Server | | Client Server | |
| | | | | | | | |
| | 1.) GET to Member IRI | | | | 1.) GET to Member IRI | | |
| |------------------------------------------>| | | |------------------------------------------>| | |
| | | | | | | | |
| | 2.) Member Representation | | | | 2.) Member Representation | | |
| |<------------------------------------------| | | |<------------------------------------------| | |
| | | | | | | | |
| | | | |
| 1. The client sends a GET request to the member's IRI to retrieve | | 1. The client sends a GET request to the Member's IRI to retrieve | |
| its representation . | | its representation . | |
| | | | |
| 2. The server responds with the representation of the resource. | | 2. The server responds with the representation of the resource. | |
| | | | |
| 5.3.2 Updating a Resource | | 5.3.2 Updating a Resource | |
| | | | |
| Client Server | | Client Server | |
| | | | | | | | |
| | 1.) PUT to Member IRI | | | | 1.) PUT to Member IRI | | |
| |------------------------------------------>| | | |------------------------------------------>| | |
| | | | | | | | |
| | 2.) 200 OK | | | | 2.) 200 OK | | |
| |<------------------------------------------| | | |<------------------------------------------| | |
| | | | |
| 1. The client PUTs an updated representation to the member's IRI. | | 1. The client PUTs an updated representation to the Member's IRI. | |
| | | | |
| 2. Upon a successful update of the resource the server responds with | | 2. Upon a successful update of the resource the server responds with | |
| a status code of 200. | | a status code of 200. | |
| | | | |
| 5.3.3 Deleting a Resource | | 5.3.3 Deleting a Resource | |
| | | | |
| Client Server | | Client Server | |
| | | | | | | | |
| | 1.) DELETE to Member Resource IRI | | | | 1.) DELETE to Member Resource IRI | | |
| |------------------------------------------>| | | |------------------------------------------>| | |
| | | | | | | | |
| | 2.) 200 Ok | | | | 2.) 200 Ok | | |
| |<------------------------------------------| | | |<------------------------------------------| | |
| | | | | | | | |
| | | | |
| 1. The client sends a DELETE request to the member's IRI. | | 1. The client sends a DELETE request to the Member's IRI. | |
| | | | |
| 2. Upon the successful deletion of the resource the server responds | | 2. Upon the successful deletion of the resource the server responds | |
| with a status code of 200. | | with a status code of 200. | |
| | | | |
| Note: deleting a member also removes it from all the collections to | | 5.4 Listing Collection Members | |
| which it belongs. | | | |
| | | | |
| 5.4 Listing Collections | | | |
| | | | |
| To enumerate the members of a collection the client sends a GET to | | To list the members of a Collection the client sends a GET request to | |
| its IRI. This IRI is constructed from information in the | | the Collection's IRI. An Atom Feed Document is returned containing | |
| introspection document. An Atom Feed Document is returned with one | | one Atom Entry for each member resource. See Section 9 and | |
| Atom Entry for each member resource that matches the selection | | Section 10 for a description of the feed contents. | |
| criteria in the IRI. See Section 9 and Section 10 for a description | | | |
| of the feed contents. | | | |
| | | | |
| Client Server | | Client Server | |
| | | | | | | | |
| | 1.) GET to List IRI | | | | 1.) GET to List IRI | | |
| |------------------------------->| | | |------------------------------->| | |
| | | | | | | | |
| | 2.) 200 OK, Atom Feed Doc | | | | 2.) 200 OK, Atom Feed Doc | | |
| |<-------------------------------| | | |<-------------------------------| | |
| | | | | | | | |
| | | | |
| 1. The client sends a GET request to the membership list IRI. | | 1. The client sends a GET request to the Collection's IRI. | |
| | | | |
| 2. The server responds with an Atom Feed Document containing the | | 2. The server responds with an Atom Feed Document containing the | |
| IRIs of all the collection members that match the selection | | IRIs of all the collection members that match the selection | |
| criteria. | | criteria. | |
| | | | |
| 5.5 Success and Failure | | 5.5 Use of HTTP Response codes | |
| | | | |
| The Atom Protocol uses HTTP status codes to signal the results of | | The Atom Protocol uses the response status codes defined in HTTP to | |
| protocol operations. Status codes of the form 2xx signal that a | | indicate the success or failure of an operation. Consult the HTTP | |
| request was successful. HTTP status codes of the form 4xx or 5xx | | specification [RFC2616] for detailed definitions of each status code. | |
| signal that an error has occurred. Consult the HTTP specification | | It is strongly recommended that entities contained within HTTP 4xx | |
| [RFC2616] for the definitions of HTTP status codes. | | and 5xx responses include a human readable, natural language | |
| | | explanation of the error. | |
| | | | |
| 6. XML-related Conventions | | 6. XML-related Conventions | |
| | | | |
| The data format in this specification is specified in terms of the | | The data format in this specification is specified in terms of the | |
| XML Information Set, serialised as XML 1.0 [W3C.REC-xml-20040204]. | | XML Information Set, serialised as XML 1.0 [W3C.REC-xml-20040204]. | |
| Atom Publishing Protocol Documents MUST be well-formed XML. This | | Atom Publishing Protocol Documents MUST be well-formed XML. This | |
| specification does not define any DTDs for Atom Protocol, and hence | | specification does not define any DTDs for Atom Protocol, and hence | |
| does not require them to be valid (in the sense used by XML). | | does not require them to be "valid" in the sense used by XML. | |
| | | | |
| 6.1 Referring to Information Items | | 6.1 Referring to Information Items | |
| | | | |
| This specification uses a shorthand for two common terms: the phrase | | This specification uses a shorthand for two common terms: the phrase | |
| "Information Item" is omitted when naming Element Information Items | | "Information Item" is omitted when discussing Element Information | |
| and Attribute Information Items. Therefore, when this specification | | Items and Attribute Information Items. Therefore, when this | |
| uses the term "element," it is referring to an Element Information | | specification uses the term "element," it is referring to an Element | |
| Item in Infoset terms. Likewise, when it uses the term "attribute," | | Information Item in Infoset terms. Likewise, when it uses the term | |
| it is referring to an Attribute Information Item. | | "attribute," it is referring to an Attribute Information Item. | |
| | | | |
| 6.2 XML Namespace Usage | | 6.2 XML Namespace Usage | |
| | | | |
| The Namespace URI [W3C.REC-xml-names-19990114] for the data format | | The namespace name [W3C.REC-xml-names-19990114] for the XML format | |
| described in this specification is: | | described in this specification is: | |
| | | | |
| http://purl.org/atom/app# | | http://purl.org/atom/app# | |
| | | | |
| This specification uses the prefix "app:" for the Namespace URI. The | | This specification uses the prefix "app:" for the namespace name. | |
| choice of namespace prefix is not semantically significant. | | The choice of namespace prefix is not semantically significant. | |
| | | | |
| This specification also uses the prefix "atom:" for the Namespace URI | | | |
| identified in [AtomFormat]. | | | |
| | | | |
| 6.3 RELAX NG Schema | | | |
| | | | |
| Some sections of this specification are illustrated with fragments of | | This specification also uses the prefix "atom:" for | |
| a non-normative RELAX NG Compact schema [RNC]. However, the text of | | "http://www.w3.org/2005/Atom", the namespace name of the Atom | |
| this specification provides the definition of conformance. A | | Publishing Format [RFC4287]. | |
| complete schema appears in Appendix B. | | | |
| | | | |
| 6.4 Use of xml:base and xml:lang | | 6.3 Use of xml:base and xml:lang | |
| | | | |
| XML elements defined by this specification MAY have an xml:base | | XML elements defined by this specification MAY have an xml:base | |
| attribute [W3C.REC-xmlbase-20010627]. When xml:base is used, it | | attribute [W3C.REC-xmlbase-20010627]. When xml:base is used, it | |
| serves the function described in section 5.1.1 of [RFC3986], | | serves the function described in section 5.1.1 of [RFC3986], | |
| establishing the base URI (or IRI) for resolving any relative | | establishing the base URI (or IRI) for resolving any relative | |
| references found within the effective scope of the xml:base | | references found within the effective scope of the xml:base | |
| attribute. | | attribute. | |
| | | | |
| Any element defined by this specification MAY have an xml:lang | | Any element defined by this specification MAY have an xml:lang | |
| attribute, whose content indicates the natural language for the | | attribute, whose content indicates the natural language for the | |
| element and its descendents. The language context is only | | element and its descendents. The language context is only | |
| significant for elements and attributes declared to be "Language- | | significant for elements and attributes declared to be "Language- | |
| Sensitive" by this specification. Requirements regarding the content | | Sensitive" by this specification. Requirements regarding the content | |
| and interpretation of xml:lang are specified in Section 2.12 of XML | | and interpretation of xml:lang are specified in Section 2.12 of XML | |
| 1.0 [W3C.REC-xml-20040204], . | | 1.0 [W3C.REC-xml-20040204]. | |
| | | | |
| appCommonAttributes = | | appCommonAttributes = | |
| attribute xml:base { atomUri }?, | | attribute xml:base { atomUri }?, | |
| attribute xml:lang { atomLanguageTag }?, | | attribute xml:lang { atomLanguageTag }?, | |
| undefinedAttribute* | | undefinedAttribute* | |
| | | | |
| 7. Introspection Documents | | 6.4 RELAX NG Schema | |
| | | | |
| 7.1 Introduction | | Some sections of this specification are illustrated with fragments of | |
| | | a non-normative RELAX NG Compact schema [RNC]. A complete schema | |
| | | appears in Appendix B. However, the text of this specification | |
| | | provides the definition of conformance. | |
| | | | |
| | | 7. Introspection Documents | |
| | | | |
| For authoring to commence, a client needs to first discover the | | For authoring to commence, a client needs to first discover the | |
| capabilities and locations of collections offered. This is done | | capabilities and locations of collections offered. This is done | |
| using Introspection Documents. An Introspection Document describes | | using Introspection Documents. An Introspection Document describes | |
| workspaces, which are server-defined groupings of collections. | | workspaces, which are server-defined groupings of collections. | |
| | | | |
| 7.2 Example | | Introspection documents are identified with the "application/ | |
| | | atomserv+xml" media type (see Section 15). | |
| | | | |
| | | While an introspection document allows multiple workspaces, there is | |
| | | no requirement that a service support multiple workspaces. In | |
| | | addition, a collection MAY appear in more than one workspace. | |
| | | | |
| | | 7.1 Example | |
| | | | |
| <?xml version="1.0" encoding='utf-8'?> | | <?xml version="1.0" encoding='utf-8'?> | |
| <service xmlns="http://purl.org/atom/app#"> | | <service xmlns="http://purl.org/atom/app#"> | |
| <workspace title="Main Site" > | | <workspace title="Main Site" > | |
| <collection | | <collection | |
| title="My Blog Entries" | | title="My Blog Entries" | |
| href="http://example.org/reilly/main" > | | href="http://example.org/reilly/main" > | |
| <member-type>entry</member-type> | | <member-type>entry</member-type> | |
| <list-template>http://example.org/{index}</list-template> | | <list-template>http://example.org/{index}</list-template> | |
| </collection> | | </collection> | |
| | | | |
| skipping to change at page 13, line 42 | | skipping to change at page 13, line 47 | |
| <workspace title="Side Bar Blog"> | | <workspace title="Side Bar Blog"> | |
| <collection title="Remaindered Links" | | <collection title="Remaindered Links" | |
| href="http://example.org/reilly/list" > | | href="http://example.org/reilly/list" > | |
| <member-type>entry</member-type> | | <member-type>entry</member-type> | |
| <list-template>http://example.org/l/{index}</list-template> | | <list-template>http://example.org/l/{index}</list-template> | |
| </collection> | | </collection> | |
| </workspace> | | </workspace> | |
| </service> | | </service> | |
| | | | |
| This Introspection Document describes two workspaces. The first, | | This Introspection Document describes two workspaces. The first, | |
| called 'Main Site', has two collections called 'My Blog Entries' and | | called "Main Site", has two collections called "My Blog Entries" and | |
| 'Pictures' whose IRIs are 'http://example.org/reilly/main' and | | "Pictures" whose IRIs are "http://example.org/reilly/main" and | |
| 'http://example.org/reilly/pic' respectively. 'My Blog Entries' is | | "http://example.org/reilly/pic" respectively. "My Blog Entries" is | |
| an Entry collection and 'Pictures' is a Media collection. Entry and | | an Entry collection and "Pictures" is a Media collection. Entry and | |
| Media collections are discussed in Section 7.3.4. | | Media collections are discussed in Section 7.2.4. | |
| | | | |
| The second workspace is called 'Side Bar Blog' and has a single | | The second workspace is called "Side Bar Blog" and has a single | |
| collection called 'Remaindered Links' whose collection IRI is | | collection called "Remaindered Links" whose collection IRI is | |
| 'http://example.org/reilly/list'. 'Remaindered Links' is an Entry | | "http://example.org/reilly/list". "Remaindered Links" is an Entry | |
| collection. | | collection. | |
| | | | |
| Introspection documents are identified with the "application/ | | 7.2 Element Definitions | |
| atomserv+xml" media type (see Section 14). | | | |
| | | | |
| While an introspection document allows multiple workspaces, there is | | | |
| no requirement that a service support multiple workspaces. In | | | |
| addition, a collection MAY appear in more than one workspace. | | | |
| | | | |
| 7.3 Element Definitions | | | |
| | | | |
| 7.3.1 The 'app:service' Element | | 7.2.1 The "app:service" Element | |
| | | | |
| The root of an introspection document is the app:service element. | | The root of an introspection document is the "app:service" element. | |
| namespace app = "http://purl.org/atom/app#" | | namespace app = "http://purl.org/atom/app#" | |
| start = appService | | start = appService | |
| | | | |
| The "app:service" element is the container for introspection | | The "app:service" element is the container for introspection | |
| information associated with one or more workspaces. An app:service | | information associated with one or more workspaces. An app:service | |
| element MUST contain one or more app:workspace elements. | | element MUST contain one or more app:workspace elements. | |
| | | | |
| appService = | | appService = | |
| element app:service { | | element app:service { | |
| appCommonAttributes, | | appCommonAttributes, | |
| ( appWorkspace+ | | ( appWorkspace+ | |
| & extensionElement* ) | | & extensionElement* ) | |
| } | | } | |
| | | | |
| 7.3.2 The 'app:workspace' Element | | 7.2.2 The "app:workspace" Element | |
| | | | |
| The 'app:workspace' element contains information elements about the | | The "app:workspace" element contains information elements about the | |
| collections of resources available for editing. The app:workspace | | collections of resources available for editing. The app:workspace | |
| element MUST contain one or more app:collection elements. | | element MUST contain one or more app:collection elements. | |
| | | | |
| appWorkspace = | | appWorkspace = | |
| element app:workspace { | | element app:workspace { | |
| appCommonAttributes, | | appCommonAttributes, | |
| attribute title { text }, | | attribute title { text }, | |
| ( appCollection+ | | ( appCollection+ | |
| & extensionElement* ) | | & extensionElement* ) | |
| } | | } | |
| | | | |
| 7.3.2.1 The 'title' Attribute | | In an app:workspace element, the first app:collection element SHOULD | |
| | | refer to the preferred or primary collection. In the following | |
| | | example, the "Entries" collection would be considered the "preferred" | |
| | | or "primary" collection of the workspace: | |
| | | | |
| The app:workspace element MUST contain a 'title' attribute, which | | <service> | |
| conveys a human-readable name for the workspace. This attribute is | | <workspace title="My Blog"> | |
| | | <collection title="Entries" ... > | |
| | | <collection title="Photos" ... > | |
| | | </workspace> | |
| | | </service> | |
| | | | |
| | | 7.2.2.1 The "title" Attribute | |
| | | | |
| | | The app:workspace element MUST contain a "title" attribute, which | |
| | | gives a human-readable name for the workspace. This attribute is | |
| Language-Sensitive. | | Language-Sensitive. | |
| | | | |
| 7.3.3 The 'app:collection' Element | | 7.2.3 The "app:collection" Element | |
| | | | |
| The app:collection contains information elements that describe the | | The "app:collection" describes a collection. This specification | |
| location and capabilities of a collection. | | defines one child element: app:member-type. | |
| | | | |
| appCollection = | | appCollection = | |
| element app:collection { | | element app:collection { | |
| appCommonAttributes, | | appCommonAttributes, | |
| attribute title { text }, | | attribute title { text }, | |
| attribute href { text }, | | attribute href { text }, | |
| ( appMemberType | | ( appMemberType | |
| & appListTemplate | | & appListTemplate | |
|