draft-ietf-atompub-protocol-12.txt   draft-ietf-atompub-protocol-13.txt 
Network Working Group J. Gregorio, Ed. Network Working Group J. Gregorio, Ed.
Internet-Draft IBM Internet-Draft IBM
Expires: June 13, 2007 B. de hOra, Ed. Intended status: Standards Track B. de hOra, Ed.
Propylon Ltd. Expires: August 9, 2007 Propylon Ltd.
December 10, 2006 February 5, 2007
The Atom Publishing Protocol The Atom Publishing Protocol
draft-ietf-atompub-protocol-12.txt draft-ietf-atompub-protocol-13.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 June 13, 2007. This Internet-Draft will expire on August 9, 2007.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2006). Copyright (C) The IETF Trust (2007).
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 [RFC4287]. documented in the Atom Syndication Format [RFC4287].
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 . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Notational Conventions . . . . . . . . . . . . . . . . . . . 5 2. Notational Conventions . . . . . . . . . . . . . . . . . . . . 6
2.1 XML-related Conventions . . . . . . . . . . . . . . . . . 5 2.1. XML-related Conventions . . . . . . . . . . . . . . . . . 6
2.1.1 Referring to Information Items . . . . . . . . . . . . 5 2.1.1. Referring to Information Items . . . . . . . . . . . . 6
2.1.2 RELAX NG Schema . . . . . . . . . . . . . . . . . . . 5 2.1.2. RELAX NG Schema . . . . . . . . . . . . . . . . . . . 6
2.1.3 Use of xml:base and xml:lang . . . . . . . . . . . . . 5 2.1.3. Use of xml:base and xml:lang . . . . . . . . . . . . . 6
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Protocol Model . . . . . . . . . . . . . . . . . . . . . . . 7 4. Protocol Model . . . . . . . . . . . . . . . . . . . . . . . . 8
5. Protocol Operations . . . . . . . . . . . . . . . . . . . . 9 4.1. Client Implementation Considerations . . . . . . . . . . . 9
5.1 Retrieving a Service Document . . . . . . . . . . . . . . 9 5. Protocol Operations . . . . . . . . . . . . . . . . . . . . . 11
5.2 Listing Collection Members . . . . . . . . . . . . . . . . 9 5.1. Retrieving a Service Document . . . . . . . . . . . . . . 11
5.3 Creating a Resource . . . . . . . . . . . . . . . . . . . 10 5.2. Listing Collection Members . . . . . . . . . . . . . . . . 11
5.4 Editing a Resource . . . . . . . . . . . . . . . . . . . . 10 5.3. Creating a Resource . . . . . . . . . . . . . . . . . . . 12
5.4.1 Retrieving a Resource . . . . . . . . . . . . . . . . 10 5.4. Editing a Resource . . . . . . . . . . . . . . . . . . . . 12
5.4.2 Updating a Resource . . . . . . . . . . . . . . . . . 11 5.4.1. Retrieving a Resource . . . . . . . . . . . . . . . . 12
5.4.3 Deleting a Resource . . . . . . . . . . . . . . . . . 11 5.4.2. Updating a Resource . . . . . . . . . . . . . . . . . 13
5.5 Use of HTTP Response codes . . . . . . . . . . . . . . . . 11 5.4.3. Deleting a Resource . . . . . . . . . . . . . . . . . 13
6. Atom Publishing Protocol Documents . . . . . . . . . . . . . 12 5.5. Use of HTTP Response codes . . . . . . . . . . . . . . . . 13
6.1 Document Types . . . . . . . . . . . . . . . . . . . . . . 12 6. Atom Publishing Protocol Documents . . . . . . . . . . . . . . 14
6.2 Document Extensibility . . . . . . . . . . . . . . . . . . 12 6.1. Document Types . . . . . . . . . . . . . . . . . . . . . . 14
7. Category Documents . . . . . . . . . . . . . . . . . . . . . 14 6.2. Document Extensibility . . . . . . . . . . . . . . . . . . 14
7.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . 14 7. Category Documents . . . . . . . . . . . . . . . . . . . . . . 16
7.2 Element Definitions . . . . . . . . . . . . . . . . . . . 14 7.1. Example . . . . . . . . . . . . . . . . . . . . . . . . . 16
7.2.1 The "app:categories" element . . . . . . . . . . . . . 14 7.2. Element Definitions . . . . . . . . . . . . . . . . . . . 16
8. Service Documents . . . . . . . . . . . . . . . . . . . . . 16 7.2.1. The "app:categories" element . . . . . . . . . . . . . 16
8.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . 17 8. Service Documents . . . . . . . . . . . . . . . . . . . . . . 18
8.2 Element Definitions . . . . . . . . . . . . . . . . . . . 18 8.1. Example . . . . . . . . . . . . . . . . . . . . . . . . . 19
8.2.1 The "app:service" Element . . . . . . . . . . . . . . 18 8.2. Element Definitions . . . . . . . . . . . . . . . . . . . 20
8.2.2 The "app:workspace" Element . . . . . . . . . . . . . 18 8.2.1. The "app:service" Element . . . . . . . . . . . . . . 20
8.2.3 The "app:collection" Element . . . . . . . . . . . . . 19 8.2.2. The "app:workspace" Element . . . . . . . . . . . . . 20
8.2.4 The "app:accept" Element . . . . . . . . . . . . . . . 19 8.2.3. The "app:collection" Element . . . . . . . . . . . . . 21
8.2.5 The "app:categories" Element . . . . . . . . . . . . . 20 8.2.4. The "app:accept" Element . . . . . . . . . . . . . . . 21
9. Creating and Editing Resources . . . . . . . . . . . . . . . 22 8.2.5. The "app:categories" Element . . . . . . . . . . . . . 22
9.1 Member URIs . . . . . . . . . . . . . . . . . . . . . . . 22 9. Creating and Editing Resources . . . . . . . . . . . . . . . . 24
9.2 Creating resources with POST . . . . . . . . . . . . . . . 22 9.1. Member URIs . . . . . . . . . . . . . . . . . . . . . . . 24
9.2.1 Example . . . . . . . . . . . . . . . . . . . . . . . 23 9.2. Creating resources with POST . . . . . . . . . . . . . . . 24
9.3 Updating Resources with PUT . . . . . . . . . . . . . . . 24 9.2.1. Example . . . . . . . . . . . . . . . . . . . . . . . 25
9.4 Deleting Resources with DELETE . . . . . . . . . . . . . . 24 9.3. Updating Resources with PUT . . . . . . . . . . . . . . . 26
9.5 Media Resources and Media Link Entries . . . . . . . . . . 25 9.4. Deleting Resources with DELETE . . . . . . . . . . . . . . 26
9.5.1 Examples . . . . . . . . . . . . . . . . . . . . . . . 26 9.5. Media Resources and Media Link Entries . . . . . . . . . . 26
9.6 The Slug: Header . . . . . . . . . . . . . . . . . . . . . 31 9.5.1. Examples . . . . . . . . . . . . . . . . . . . . . . . 27
9.6.1 Slug: Header syntax . . . . . . . . . . . . . . . . . 32 9.6. The Slug: Header . . . . . . . . . . . . . . . . . . . . . 32
9.6.2 Example . . . . . . . . . . . . . . . . . . . . . . . 32 9.6.1. Slug: Header syntax . . . . . . . . . . . . . . . . . 33
10. Listing Collections . . . . . . . . . . . . . . . . . . . . 33 9.6.2. Example . . . . . . . . . . . . . . . . . . . . . . . 33
10.1 Collection Paging . . . . . . . . . . . . . . . . . . . 33 10. Listing Collections . . . . . . . . . . . . . . . . . . . . . 34
10.2 The "app:edited" Element . . . . . . . . . . . . . . . . 34 10.1. Collection Paging . . . . . . . . . . . . . . . . . . . . 34
11. Atom Format Link Relation Extensions . . . . . . . . . . . . 35 10.2. The "app:edited" Element . . . . . . . . . . . . . . . . . 35
11.1 The "edit" Link Relation . . . . . . . . . . . . . . . . 35 11. Atom Format Link Relation Extensions . . . . . . . . . . . . . 36
11.2 The "edit-media" Link Relation . . . . . . . . . . . . . 35 11.1. The "edit" Link Relation . . . . . . . . . . . . . . . . . 36
12. Atom Publishing Controls . . . . . . . . . . . . . . . . . . 36 11.2. The "edit-media" Link Relation . . . . . . . . . . . . . . 36
12.1 The "app:control" Element . . . . . . . . . . . . . . . 36 12. The Atom Format Type Parameter . . . . . . . . . . . . . . . . 37
12.1.1 The "app:draft" Element . . . . . . . . . . . . . . 36 12.1. The 'type' parameter . . . . . . . . . . . . . . . . . . . 37
13. Securing the Atom Publishing Protocol . . . . . . . . . . . 37 12.1.1. Conformance . . . . . . . . . . . . . . . . . . . . . 37
14. Security Considerations . . . . . . . . . . . . . . . . . . 38 13. Atom Publishing Controls . . . . . . . . . . . . . . . . . . . 38
14.1 Denial of Service . . . . . . . . . . . . . . . . . . . 38 13.1. The "app:control" Element . . . . . . . . . . . . . . . . 38
14.2 Replay Attacks . . . . . . . . . . . . . . . . . . . . . 38 13.1.1. The "app:draft" Element . . . . . . . . . . . . . . . 38
14.3 Spoofing Attacks . . . . . . . . . . . . . . . . . . . . 38 14. Securing the Atom Publishing Protocol . . . . . . . . . . . . 39
14.4 Linked Resources . . . . . . . . . . . . . . . . . . . . 38 15. Security Considerations . . . . . . . . . . . . . . . . . . . 40
14.5 Digital Signatures and Encryption . . . . . . . . . . . 38 15.1. Denial of Service . . . . . . . . . . . . . . . . . . . . 40
14.6 URIs and IRIs . . . . . . . . . . . . . . . . . . . . . 38 15.2. Replay Attacks . . . . . . . . . . . . . . . . . . . . . . 40
15. IANA Considerations . . . . . . . . . . . . . . . . . . . . 39 15.3. Spoofing Attacks . . . . . . . . . . . . . . . . . . . . . 40
15.1 Content-type registration for 15.4. Linked Resources . . . . . . . . . . . . . . . . . . . . . 40
'application/atomserv+xml' . . . . . . . . . . . . . . . 39 15.5. Digital Signatures and Encryption . . . . . . . . . . . . 40
15.2 Content-type registration for 15.6. URIs and IRIs . . . . . . . . . . . . . . . . . . . . . . 40
'application/atomcat+xml' . . . . . . . . . . . . . . . 40 16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41
15.3 Header field registration for 'SLUG' . . . . . . . . . . 41 16.1. Content-type registration for
16. References . . . . . . . . . . . . . . . . . . . . . . . . . 43 'application/atomserv+xml' . . . . . . . . . . . . . . . . 41
16.1 Normative References . . . . . . . . . . . . . . . . . . 43 16.2. Content-type registration for 'application/atomcat+xml' . 42
16.2 Informative References . . . . . . . . . . . . . . . . . 44 16.3. Header field registration for 'SLUG' . . . . . . . . . . . 43
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 45 16.4. The Link Relation registration "edit" . . . . . . . . . . 44
A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 46 16.5. The Link Relation registration "edit-media" . . . . . . . 44
B. RELAX NG Compact Schema . . . . . . . . . . . . . . . . . . 47 16.6. The Atom Format Media Type Parameter . . . . . . . . . . . 44
C. Revision History . . . . . . . . . . . . . . . . . . . . . . 53 17. References . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Intellectual Property and Copyright Statements . . . . . . . 56 17.1. Normative References . . . . . . . . . . . . . . . . . . . 45
17.2. Informative References . . . . . . . . . . . . . . . . . . 46
Appendix A. Contributors . . . . . . . . . . . . . . . . . . . . 48
Appendix B. RELAX NG Compact Schema . . . . . . . . . . . . . . . 49
Appendix C. Revision History . . . . . . . . . . . . . . . . . . 55
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 58
Intellectual Property and Copyright Statements . . . . . . . . . . 59
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-20060816]. The protocol supports the creation of [W3C.REC-xml]. The protocol supports the creation of Web resources
arbitrary Web resources and provides facilities for: and provides facilities for:
o Collections: Sets of resources, which can be retrieved in whole or o Collections: Sets of resources, which can be retrieved in whole or
in part. in part.
o Service: Discovering and describing Collections. o Service: Discovering and describing Collections.
o Editing: Creating, updating and deleting resources. o Editing: Creating, updating and deleting resources.
The Atom Publishing Protocol is different from many contemporary
protocols in that the server is given wide latitude in processing
requests from clients. See Section 4 for more details.
2. Notational Conventions 2. Notational Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
2.1 XML-related Conventions 2.1. XML-related Conventions
2.1.1 Referring to Information Items 2.1.1. Referring to Information Items
Atom Protocol Document formats are specified in terms of the XML Atom Protocol Document formats are specified in terms of the XML
Information Set [W3C.REC-xml-infoset-20040204], serialized as XML 1.0 Information Set [W3C.REC-xml-infoset], serialized as XML 1.0
[W3C.REC-xml-20060816]. [W3C.REC-xml].
The Infoset terms "Element Information Item" and "Attribute The Infoset terms "Element Information Item" and "Attribute
Information Item" are shortened to "element" and "attribute" Information Item" are shortened to "element" and "attribute"
respectively. Therefore, when this specification uses the term respectively. Therefore, when this specification uses the term
"element", it is referring to an Element Information Item, and when "element", it is referring to an Element Information Item, and when
it uses the term "attribute", it is referring to an Attribute it uses the term "attribute", it is referring to an Attribute
Information Item. Information Item.
2.1.2 RELAX NG Schema 2.1.2. RELAX NG Schema
Some sections of this specification are illustrated with fragments of Some sections of this specification are illustrated with fragments of
a non-normative RELAX NG Compact schema [RNC]. However, the text of a non-normative RELAX NG Compact schema [RNC]. However, the text of
this specification provides the definition of conformance. Complete this specification provides the definition of conformance. Complete
schemas appear in Appendix B. schemas appear in Appendix B.
2.1.3 Use of xml:base and xml:lang 2.1.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 URI Generic Syntax serves the function described in Section 5.1.1 of URI Generic Syntax
[RFC3986], by establishing the base URI (or IRI) for resolving [RFC3986], by establishing the base URI (or IRI) for resolving
relative references found within the scope of the xml:base attribute. relative references found within the scope of the xml:base 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-20060816]. 1.0 [W3C.REC-xml].
3. Terminology 3. Terminology
For convenience, this protocol can be referred to as the "Atom For convenience, this protocol can be referred to as the "Atom
Protocol" or "APP". Protocol" or "APP".
URI/IRI - A Uniform Resource Identifier and Internationalized URI/IRI - A Uniform Resource Identifier and Internationalized
Resource Identifier. These terms and the distinction between them Resource Identifier. These terms and the distinction between them
are defined in [RFC3986] and [RFC3987]. Before an IRI found in a are defined in [RFC3986] and [RFC3987]. Before an IRI found in a
document is used by HTTP, the IRI is first converted to a URI (see document is used by HTTP, the IRI is first converted to a URI (see
skipping to change at page 7, line 22 skipping to change at page 8, line 22
o POST is used to create a new, dynamically-named, resource. When o POST is used to create a new, dynamically-named, resource. When
the client submits non-Atom-Entry representations to a Collection the client submits non-Atom-Entry representations to a Collection
for creation, two resources are always created - a Media Entry for for creation, two resources are always created - a Media Entry for
the requested resource, and a Media Link Entry for metadata (in the requested resource, and a Media Link Entry for metadata (in
Atom Entry format) about the resource. Atom Entry format) about the 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 known resource. o DELETE is used to remove a known resource.
The Atom Protocol imposes few restrictions on the actions of servers.
Unless a constraint is specified here, servers can be expected to
vary in behavior, in particular around the manipulation of Atom
Entries sent by clients. For example this specification only defines
the expected behavior of Collections with respect to GET and POST,
but this does not imply that PUT, DELETE, PROPPATCH and others are
forbidden on Collection resources - only that this specification does
not define what the servers response would be to those methods.
Similarly while some HTTP status codes are mentioned explicitly,
clients should be prepared to handle any valid status code from a
server.
This document does not specify the form of the URIs that are used. This document does not specify the form of the URIs that are used.
HTTP ([RFC2616]) specifies that the URI space of each server is HTTP ([RFC2616]) specifies that the URI space of each server is
controlled by that server and the Atom Protocol imposes no controlled by that server and the Atom Protocol imposes no
constraints on that control. What this RFC does specify are the constraints on that control. What this RFC does specify are the
formats of the representations that are exchanged and the actions formats of the representations that are exchanged and the actions
that can be performed on the IRIs embedded in those documents. that can be performed on the IRIs embedded in those documents.
This document only covers the creation, update and deletion of Entry This document only covers the creation, update and deletion of Entry
and Media resources. Other resources can be created, updated, and and Media resources. Other resources can be created, updated, and
deleted as the result of manipulating a Collection, but the number of deleted as the result of manipulating a Collection, but the number of
those resources, their mime-types, and effects of Atom Protocol those resources, their media-types, and effects of Atom Protocol
operations on them are outside the scope of this specification. operations on them are outside the scope of this specification.
Since all aspects of client-server interaction are defined in terms Since all aspects of client-server interaction are defined in terms
of HTTP, [RFC2616] should be consulted for any areas not covered in of HTTP, [RFC2616] should be consulted for any areas not covered in
this specification. this specification.
Along with operations on Member Resources, the Atom Protocol defines Along with operations on Member Resources, the Atom Protocol defines
Collection Resources for managing and organizing Member Resources. Collection Resources for managing and organizing Member Resources.
Collections are represented by Atom Feed documents and contain the Collections are represented by Atom Feed documents and contain the
IRIs of, and metadata about, their Member Resources. The Atom IRIs of, and metadata about, their Member Resources. The Atom
Protocol does not make a distinction between Feeds used for Protocol does not make a structural distinction between Feeds used
Collections and other Atom Feeds. The only mechanism that this for Collections and other Atom Feeds. The only mechanism that this
specification supplies for distinguishing a Collection Feed is its specification supplies for distinguishing a Collection Feed is its
appearance in a Service Document. appearance in a Service Document.
Atom Protocol documents allow the use of IRIs [RFC3987], as well as Atom Protocol documents allow the use of IRIs [RFC3987], as well as
URIs [RFC3986]. Before an IRI found in a document is used by HTTP, URIs [RFC3986]. Before an IRI found in a document is used by HTTP,
the IRI is first converted to a URI according the procedure defined the IRI is first converted to a URI according the procedure defined
in Section 3.1 of [RFC3987]. In accordance with that specification, in Section 3.1 of [RFC3987]. In accordance with that specification,
this conversion SHOULD be applied as late as possible. The IRI, and this conversion SHOULD be applied as late as possible. The IRI, and
the URI into which it is converted, identify the same resource. the URI into which it is converted, identify the same resource.
skipping to change at page 8, line 31 skipping to change at page 9, line 18
Entries [RFC4287]. Media Resources can have representations in any Entries [RFC4287]. Media Resources can have representations in any
media type. A Media Link Entry is a Member Entry that contains media type. A Media Link Entry is a Member Entry that contains
metadata about a Media Resource. This diagram shows the metadata about a Media Resource. This diagram shows the
classification of the resources: classification of the resources:
Member Resource Member Resource
-> Member Entry Resource -> Member Entry Resource
-> Media Link Entry Resource -> Media Link Entry Resource
-> Media Resource -> Media Resource
Collections, represented by Atom feeds, contain Entries. Those A Collection's Atom Entries contain the Member Entry and Media
Entries contain the Member Entry and Media Resources IRIs of the Resources IRIs of the Collection. A Collection can contain any
Collection. A Collection can contain any number of Entries of either number of Entries for either kind. In the diagram of a Collection
kind. In the diagram of a Collection below, there are two Entries. below, there are two Entries. The first contains the IRI of a Member
The first contains the IRI of a Member Entry Resource. The second Entry Resource. The second contains the IRIs of both a Media
contains the IRIs of both a Media Resource and a Media Link Entry Resource and a Media Link Entry Resource, which contains the metadata
Resource, which contains the metadata for that Media Resource: for that Media Resource:
Collection Collection
Entry Entry
Member Entry IRI -> Member Entry Resource Member Entry IRI -> Member Entry Resource
Entry Entry
Member Entry IRI -> Media Link Entry Resource Member Entry IRI -> Media Link Entry Resource
Media IRI -> Media Resource Media IRI -> Media Resource
Service Documents represent server-defined groups of Collections, and Service Documents represent server-defined groups of Collections, and
are used to initialize the process of creating and editing resources. are used to initialize the process of creating and editing resources.
4.1. Client Implementation Considerations
The Atom Protocol imposes few restrictions on the actions of servers.
Unless a constraint is specified here, servers can be expected to
vary in behavior, in particular around the manipulation of Atom
Entries sent by clients. For example, although this specification
only defines the expected behavior of Collections with respect to GET
and POST, this does not imply that PUT, DELETE, PROPPATCH and others
are forbidden on Collection resources - only that this specification
does not define what the servers response would be to those methods.
Similarly while some HTTP status codes are mentioned explicitly,
clients should be prepared to handle any status code from a server.
Servers can choose to accept, reject, delay, moderate, censor,
reformat, translate, relocate or recategorize the content submitted
to them. Only some of these choices are immediately relayed back to
the client in responses to client requests; other choices may only
become apparent later, in the feed or published entries. The same
series of requests to two different publishing sites can result in a
different series of HTTP responses, different resulting feeds or
different entry contents.
As a result, client software has to be written flexibly to accept
what the server decides are the results of its submissions. Any
server response or server content modification not explicitly
forbidden by this specification or HTTP ([RFC2616]) is therefore
allowed.
5. Protocol Operations 5. Protocol Operations
5.1 Retrieving a Service Document 5.1. Retrieving a Service Document
Client Server Client Server
| | | |
| 1.) GET to Service Document | | 1.) GET to Service Document |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) Service Document | | 2.) Service Document |
|<------------------------------------------| |<------------------------------------------|
| | | |
1. The client sends a GET request using the URI of the Service 1. The client sends a GET request using the URI of the Service
Document. Document.
2. The server responds with the document enumerating the IRIs of a 2. The server responds with the document enumerating the IRIs of a
group of Collections and the capabilities of those Collections group of Collections and the capabilities of those Collections
supported by the server. The content of this document can vary supported by the server. The content of this document can vary
based on aspects of the client request, including, but not based on aspects of the client request, including, but not
limited to, authentication credentials. limited to, authentication credentials.
5.2 Listing Collection Members 5.2. Listing Collection Members
To list the members of a Collection, the client sends a GET request To list the members of a Collection, the client sends a GET request
to the URI of a Collection. An Atom Feed Document is returned whose to the URI of a Collection. An Atom Feed Document is returned whose
Entries contain the IRIs of Member Resources. The returned Feed may Entries contain the IRIs of Member Resources. The returned Feed may
describe all, or only a subset, of the Members in a Collection (see describe all, or only a subset, of the Members in a Collection (see
Section 10). Section 11 describes extensions to the Atom Syndication Section 10). Section 11 describes extensions to the Atom Syndication
Format used in the Atom Protocol. Format used in the Atom Protocol.
Client Server Client Server
| | | |
skipping to change at page 10, line 5 skipping to change at page 12, line 5
| | | |
| 2.) Atom Feed Doc | | 2.) Atom Feed Doc |
|<-------------------------------| |<-------------------------------|
| | | |
1. The client sends a GET request to the URI of the Collection. 1. The client sends a GET request to the URI of the Collection.
2. The server responds with an Atom Feed Document containing the 2. The server responds with an Atom Feed Document containing the
IRIs of the Collection members. IRIs of the Collection members.
5.3 Creating a Resource 5.3. Creating a Resource
Client Server Client Server
| | | |
| 1.) POST to URI of Collection | | 1.) POST to URI of Collection |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) 201 Created | | 2.) 201 Created |
| Location: Member Entry URI | | Location: Member Entry URI |
|<------------------------------------------| |<------------------------------------------|
| | | |
skipping to change at page 10, line 27 skipping to change at page 12, line 27
1. The client POSTs a representation of the Member to the URI of the 1. The client POSTs a representation of the Member to the URI of the
Collection. 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 Entry Resource. contains the IRI of the newly created Member Entry Resource.
Media Resources could have also been created and their IRIs can Media Resources could have also been created and their IRIs can
be found through the Member Entry Resource. See Section 9.5 for be found through the Member Entry Resource. See Section 9.5 for
more details. more details.
5.4 Editing a Resource 5.4. Editing a Resource
Once a resource has been created and its Member URI is known, that Once a resource has been created and its Member URI is known, that
URI can be used to retrieve, update, and delete the resource. URI can be used to retrieve, update, and delete the resource.
5.4.1 Retrieving a Resource 5.4.1. Retrieving a Resource
Client Server Client Server
| | | |
| 1.) GET to Member URI | | 1.) GET to Member URI |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) Member Representation | | 2.) Member Representation |
|<------------------------------------------| |<------------------------------------------|
| | | |
1. The client sends a GET request to the URI of a Member Resource to 1. The client sends a GET request to the URI of a Member Resource to
retrieve its representation. retrieve its representation.
2. The server responds with the representation of the resource. 2. The server responds with the representation of the resource.
5.4.2 Updating a Resource 5.4.2. Updating a Resource
Client Server Client Server
| | | |
| 1.) PUT to Member URI | | 1.) PUT to Member URI |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) 200 OK | | 2.) 200 OK |
|<------------------------------------------| |<------------------------------------------|
1. The client PUTs an updated representation to the URI of a Member 1. The client PUTs an updated representation to the URI of a Member
Resource. Resource.
2. If the update is successful the server responds with a status 2. If the update is successful the server responds with a status
code of 200. code of 200.
5.4.3 Deleting a Resource 5.4.3. Deleting a Resource
Client Server Client Server
| | | |
| 1.) DELETE to Member URI | | 1.) DELETE to Member URI |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) 200 Ok | | 2.) 200 Ok |
|<------------------------------------------| |<------------------------------------------|
| | | |
1. The client sends a DELETE request to the URI of a Member 1. The client sends a DELETE request to the URI of a Member
Resource. Resource.
2. If the deletion is successful the server responds with a status 2. If the deletion is successful the server responds with a status
code of 200. code of 200.
A different approach is taken for deleting Media Resources, see A different approach is taken for deleting Media Resources, see
Section 9.5 for details. Section 9.5 for details.
5.5 Use of HTTP Response codes 5.5. Use of HTTP Response codes
The Atom Protocol uses the response status codes defined in HTTP to The Atom Protocol uses the response status codes defined in HTTP to
indicate the success or failure of an operation. Consult the HTTP indicate the success or failure of an operation. Consult the HTTP
specification [RFC2616] for detailed definitions of each status code. specification [RFC2616] for detailed definitions of each status code.
Implementers are asked to note that per the HTTP specification, HTTP Implementers are asked to note that according to the HTTP
4xx and 5xx response entities SHOULD include a human-readable specification, HTTP 4xx and 5xx response entities SHOULD include a
explanation of the error. human-readable explanation of the error.
6. Atom Publishing Protocol Documents 6. Atom Publishing Protocol Documents
6.1 Document Types 6.1. Document Types
This specification describes two kinds of Documents - Category This specification describes two kinds of Documents - Category
Documents and Service Documents. Documents and Service Documents.
A Category Document (Section 7) contain lists of categories specified A Category Document (Section 7) contains lists of categories
using the "atom:category" element from the Atom Syndication Format. specified using the "atom:category" element from the Atom Syndication
A Service Document (Section 8) describes Workspaces, which are Format. A Service Document (Section 8) describes Workspaces, which
server-defined groups of Collections. This specification assigns no are server-defined groups of Collections. This specification assigns
meaning to Workspaces; that is, a Workspace does not imply any no meaning to Workspaces; that is, a Workspace does not imply any
specific processing assumptions. Operations on Workspaces specific processing assumptions. Operations on Workspaces
themselves, such as creation or deletion, are not defined by this themselves, such as creation or deletion, are not defined by this
specification. specification.
The namespace name [W3C.REC-xml-names-20060816] for either kind of The namespace name [W3C.REC-xml-names] for either kind of document
document is: is:
http://purl.org/atom/app# http://purl.org/atom/app#
[[anchor8: The namespace name needs to be updated with the final URI [[anchor8: The namespace name needs to be updated with the final URI
upon publication]] upon publication]]
This specification uses the prefix "app:" for the namespace name. This specification uses the prefix "app:" for the namespace name.
The prefix "atom:" is used for "http://www.w3.org/2005/Atom", the The prefix "atom:" is used for "http://www.w3.org/2005/Atom", the
namespace name of the Atom Syndication Format [RFC4287]. The namespace name of the Atom Syndication Format [RFC4287]. The
namespace prefixes are not semantically significant. namespace prefixes are not semantically significant.
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 formats, and specification does not define any DTDs for Atom Protocol formats, and
hence does not require them to be "valid" in the sense used by XML. hence does not require them to be "valid" in the sense used by XML.
6.2 Document Extensibility 6.2. Document Extensibility
Unrecognized markup in an Atom Publishing Protocol document is Unrecognized markup in an Atom Publishing Protocol document is
considered "foreign markup" as defined in [RFC4287]. Such foreign considered "foreign markup" as defined in [RFC4287]. Such foreign
markup can be used anywhere within a Category or Service Document markup can be used anywhere within a Category or Service Document
unless it is explicitly forbidden. Processors that encounter foreign unless it is explicitly forbidden. Processors that encounter foreign
markup MUST NOT stop processing and MUST NOT signal an error. markup MUST NOT stop processing and MUST NOT signal an error.
Clients SHOULD preserve foreign markup when transmitting such Clients SHOULD preserve foreign markup when transmitting such
documents. documents.
The namespace name "http://purl.org/atom/app#" is reserved for The namespace name "http://purl.org/atom/app#" is reserved for
forward compatible revisions of the Category and Service Document forward compatible revisions of the Category and Service Document
types - this does not exclude the addition of elements and attributes types - this does not exclude the addition of elements and attributes
that might not be recognized by processors conformant to this that might not be recognized by processors conformant t