idnits 2.17.00 (12 Aug 2021)
/tmp/idnits31081/draft-sayre-2-way-rss-05.txt:
Checking boilerplate required by RFC 5378 and the IETF Trust (see
https://trustee.ietf.org/license-info):
----------------------------------------------------------------------------
** It looks like you're using RFC 3978 boilerplate. You should update this
to the boilerplate described in the IETF Trust License Policy document
(see https://trustee.ietf.org/license-info), which is required now.
-- Found old boilerplate from RFC 3978, Section 5.1 on line 16.
-- Found old boilerplate from RFC 3978, Section 5.2b on line 16.
-- Found old boilerplate from RFC 3978, Section 5.5 on line 559.
-- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 536.
-- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 543.
-- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 549.
-- The document has an RFC 3978 Section 5.2(b) Derivative Works Limitation
clause. If this document is intended for submission to the IESG for
publication, this constitutes an error.
** This document has an original RFC 3978 Section 5.4 Copyright Line,
instead of the newer IETF Trust Copyright according to RFC 4748.
** This document has an original RFC 3978 Section 5.5 Disclaimer, instead
of the newer disclaimer which includes the IETF Trust according to RFC
4748.
Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt:
----------------------------------------------------------------------------
== No 'Intended status' indicated for this document; assuming Proposed
Standard
Checking nits according to https://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
** The document seems to lack a Security Considerations section.
** The document seems to lack an IANA Considerations section. (See Section
2.2 of https://www.ietf.org/id-info/checklist for how to handle the case
when there are no actions for IANA.)
** The document seems to lack separate sections for Informative/Normative
References. All references will be assumed normative when checking for
downward references.
** There is 1 instance of too long lines in the document, the longest one
being 1 character in excess of 72.
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the RFC 3978 Section 5.4 Copyright Line does not
match the current year
-- The document seems to lack a disclaimer for pre-RFC5378 work, but may
have content which was first submitted before 10 November 2008. If you
have contacted all the original authors and they are all willing to grant
the BCP78 rights to the IETF Trust, then this is fine, and you can ignore
this comment. If not, you may need to add the pre-RFC5378 disclaimer.
(See the Legal Provisions document at
https://trustee.ietf.org/license-info for more information.)
-- The document date (May 18, 2006) is 5846 days in the past. Is this
intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
== Unused Reference: 'RSS091' is defined on line 496, but no explicit
reference was found in the text
== Unused Reference: 'RSS092' is defined on line 499, but no explicit
reference was found in the text
== Unused Reference: 'RSS2' is defined on line 502, but no explicit
reference was found in the text
-- Possible downref: Non-RFC (?) normative reference: ref. 'OBJECT'
-- Possible downref: Non-RFC (?) normative reference: ref. 'OPML2'
** Obsolete normative reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231,
RFC 7232, RFC 7233, RFC 7234, RFC 7235)
** Obsolete normative reference: RFC 2822 (Obsoleted by RFC 5322)
-- Possible downref: Non-RFC (?) normative reference: ref. 'RSS'
-- Possible downref: Non-RFC (?) normative reference: ref. 'RSS091'
-- Possible downref: Non-RFC (?) normative reference: ref. 'RSS092'
-- Possible downref: Non-RFC (?) normative reference: ref. 'RSS2'
-- Possible downref: Non-RFC (?) normative reference: ref. 'XHTML'
-- Possible downref: Non-RFC (?) normative reference: ref. '1'
Summary: 9 errors (**), 0 flaws (~~), 5 warnings (==), 17 comments (--).
Run idnits with the --verbose option for more detailed information about
the items above.
--------------------------------------------------------------------------------
2 Network Working Group R. Sayre
3 Internet-Draft May 18, 2006
4 Expires: November 19, 2006
6 2-Way RSS
7 draft-sayre-2-way-rss-05
9 Status of this Memo
11 By submitting this Internet-Draft, each author represents that any
12 applicable patent or other IPR claims of which he or she is aware
13 have been or will be disclosed, and any of which he or she becomes
14 aware will be disclosed, in accordance with Section 6 of BCP 79.
15 This document may not be modified, and derivative works of it may not
16 be created.
18 Internet-Drafts are working documents of the Internet Engineering
19 Task Force (IETF), its areas, and its working groups. Note that
20 other groups may also distribute working documents as Internet-
21 Drafts.
23 Internet-Drafts are draft documents valid for a maximum of six months
24 and may be updated, replaced, or obsoleted by other documents at any
25 time. It is inappropriate to use Internet-Drafts as reference
26 material or to cite them other than as "work in progress."
28 The list of current Internet-Drafts can be accessed at
29 http://www.ietf.org/ietf/1id-abstracts.txt.
31 The list of Internet-Draft Shadow Directories can be accessed at
32 http://www.ietf.org/shadow.html.
34 This Internet-Draft will expire on November 19, 2006.
36 Copyright Notice
38 Copyright (C) The Internet Society (2006).
40 Abstract
42 This memo presents a protocol that uses XML and HTTP to publish and
43 edit Web resources.
45 Table of Contents
47 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
48 2. The 2-Way RSS Model . . . . . . . . . . . . . . . . . . . . . 3
49 3. Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . 3
50 4. Listing . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
51 5. Authoring . . . . . . . . . . . . . . . . . . . . . . . . . . 4
52 6. 2-Way RSS Feeds . . . . . . . . . . . . . . . . . . . . . . . 6
53 7. 2-Way Media RSS Feeds . . . . . . . . . . . . . . . . . . . . 7
54 8. Service Outlines . . . . . . . . . . . . . . . . . . . . . . . 9
55 9. The 2-Way RSS Namespace . . . . . . . . . . . . . . . . . . . 11
56 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12
57 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 13
58 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 14
59 Intellectual Property and Copyright Statements . . . . . . . . . . 15
61 1. Introduction
63 2-Way RSS uses HTTP [RFC2616] and XML [XML 1.0] to publish and edit
64 Web resources.
66 1.1. Editor's Note
68 To discuss this draft, please join the 2-Way RSS mailing list [1].
69 Membership is open to all.
71 2. The 2-Way RSS Model
73 2-Way RSS uses HTTP to operate on collections of Web resources
74 represented by RSS feeds [RSS]. In 2-Way RSS, individual RSS items
75 have URIs [RFC3986]. This section illustrates the editing cycle for
76 RSS items.
77 o GET is used to retrieve an item or perform a read-only query.
78 o POST is used to create a new item.
79 o PUT is used to update an existing item.
80 o DELETE is used to remove an item.
82 3. Discovery
84 To discover the location of the feeds exposed by a 2-way RSS service,
85 the client must locate and request the Service Outline, an OPML 2.0
86 document [OPML2].
88 Client Server
89 | |
90 | 1.) GET Service Outline URI |
91 |------------------------------->|
92 | |
93 | 2.) Service OPML Document |
94 |<-------------------------------|
95 | |
97 1. The client sends a GET request to the Service Outline URI.
98 2. The server responds with an OPML Document containing the
99 locations of feeds provided by the service. The content of this
100 document can vary based on aspects of the client request,
101 including, but not limited to, authentication credentials.
103 4. Listing
104 Once the client has discovered the location of a feed in the outline,
105 it can request a listing of the feed's items. However, a feed might
106 contain an extremely large number of items, so servers are likely to
107 list a small subset of them by default.
109 Client Server
110 | |
111 | 1.) GET to RSS Feed URI |
112 |------------------------------->|
113 | |
114 | 2.) 200 OK, RSS Feed Doc |
115 |<-------------------------------|
116 | |
118 1. The client sends a GET request to the RSS Feed's URI.
119 2. The server responds with an RSS Feed Document containing a full
120 or partial listing of the feed's membership.
122 5. Authoring
124 After locating a feed, a client can add entries by sending a POST
125 request to the feed; other changes are accomplished by sending HTTP
126 requests to each item.
128 5.1. Create
130 Client Server
131 | |
132 | 1.) POST Item to Feed URI |
133 |------------------------------->|
134 | |
135 | 2.) 201 Created @ Location |
136 |<-------------------------------|
137 | |
139 1. The client sends an RSS item to the server via HTTP POST. The
140 Request URI is that of the RSS Feed.
141 2. The server responds with a response of "201 Created" and a
142 "Location" header containing the URI of the newly-created RSS
143 item.
145 5.2. Read
147 Client Server
148 | |
149 | 1.) GET to Item URI |
150 |------------------------------->|
151 | |
152 | 2.) 200 OK RSS Item |
153 |<-------------------------------|
154 | |
156 1. The client sends a GET request to the item's URI.
157 2. The server responds with an RSS item.
159 5.3. Update
161 Client Server
162 | |
163 | 1.) PUT to RSS Item URI |
164 |------------------------------->|
165 | |
166 | 2.) 200 OK |
167 |<-------------------------------|
168 | |
170 1. The client PUTs an updated RSS item to the item's URI.
171 2. The server responds with a successful status code.
173 5.4. Delete
175 Client Server
176 | |
177 | 1.) DELETE to Item URI |
178 |------------------------------->|
179 | |
180 | 2.) 204 No Content |
181 |<-------------------------------|
182 | |
184 1. The client sends a DELETE request to the item's URI.
185 2. The server responds with successful status code.
187 5.5. Success and Failure
189 HTTP defines classes of response. HTTP status codes of the form 2xx
190 signal that a request was successful. HTTP status codes of the form
191 4xx or 5xx signal that an error has occurred, and the request has
192 failed. Consult the HTTP specification for more detailed definitions
193 of each status code.
195 6. 2-Way RSS Feeds
197 6.1. GET
199 RSS feeds can contain extremely large numbers of items. A naive
200 client such as a web spider or web browser would be overwhelmed if
201 the response to a GET contained every item in the feed, and the
202 server would waste large amounts of bandwidth and processing time on
203 clients unable to handle the response. As a result, responses to a
204 simple GET request represent a server-determined subset of the items
205 in the feed.
207 An example 2-Way RSS feed:
209
210
211 The Baron in the Trees
212 http://example.org/trees.html
213 Recent posts.
214
215
216 Chapter One
217 It was on the fifteenth of June, 1767,
218 that Cosimo Piovasco di Rondò, my brother,
219 sat among us for the last time.
220 uuid:941e12b4-6eeb-4753-959d-0cbc51875387
221 http://example.org/chapter1.html
222
223
224
225
227 Each member item is represented by an element, but those items
228 are not an editable representation of the each item. To retrieve the
229 source representation of the item, clients send a GET request to the
230 URI found in each item's edit link, an 'r:link' element Section 9.1
231 with an 'edit' relation.
233 6.2. POST
235 A 2-Way RSS feed also accepts POST requests. The client POSTs a new
236 item to the RSS feed. Some feeds only accept POST requests with
237 certain media-types, so a POST request could result in a response
238 with a status code of 415 ("Unsupported Media Type"). In the case of
239 a successful creation, the status code is 201 ("Created").
241 Example HTTP request creating a new item in a feed:
243 POST /wall HTTP/1.1
244 Host: example.org
245 User-Agent: Cosimo/1.0
246 Content-Type: text/xml
247 Content-Length: nnnn
249
250 Chapter One
251 It started out simple...
252 uuid:941e12b4-6eeb-4753-959d-0cbc51875387
253 http://example.org/chapter1.html
254
255
257 Example response.
259 HTTP/1.1 201 Created
260 Date: Mon, 21 Mar 2005 19:20:19 GMT
261 Server: CountBasic/1.0
262 ETag: "4c083-268-423f1dc6"
263 Location: http://example.org/items/foo13241234.xml
265 7. 2-Way Media RSS Feeds
267 The items within 2-way Media RSS Feeds do not represent uniform types
268 of content. For example, they might contain podcasts, JPEG images,
269 text documents, MPEG movies, or any other type of resource the server
270 allows.
272 7.1. GET
274 2-Way Media RSS Feeds return an RSS feed much like the textual 2-Way
275 RSS feeds described above, but with a few additions. The entries
276 also contain an element with a 'url' attribute pointing
277 to the media object. This URL can be used to edit the uploaded media
278 object, using PUT and DELETE. Such items may contain edit links used
279 to edit the item metadata.
281 An example 2-Way Media RSS Feed:
283
284
285 My Pics
286 http://example.org/pics
287 Recent photos.
288
289
290 beach25
291 http://example.org/beach-pic1.html
292 uuid:941e12b4-6eeb-4753-959d-0cbc51875387
293 This was awesome.
294
297
298
299
301 Implementations require that each such item contain either a
302 or element. The value for the element will
303 likely be provided by the client, as a way for users to associate
304 their local objects with those they have uploaded to the server (see
305 POST below).
307 7.2. POST
309 To add an item to a 2-Way Media RSS feed, clients POST the resource
310 to the Media feed's URL. Clients should provide a 'Title' request
311 header [OBJECT] to provide the server with a short string identifying
312 the object to users.
314 Clients may include a 'Content-Description' header [RFC2045]
315 providing a more complete description of the content. Data gleaned
316 from other entity headers, such as 'Keywords' [RFC2822] and 'From'
317 [RFC2616], may also be exposed in the RSS feed.
319 Servers may inspect the POSTed entity for additional metadata to be
320 exposed in an element when listed in a 2-Way Media RSS feed.
321 For example, the server might inspect a JPEG file for EXIF headers
322 containing creator data.
324 An example request:
326 POST /pics HTTP/1.1
327 Host: example.org
328 User-Agent: Cosimo/1.0
329 Content-Type: image/tiff
330 Content-Length: nnnn
331 Title: A trip to the beach
332 From: Bobby
333 Keywords: beach, digginit, tags, mrpibb, redvines
334 Content-Description: It was so fun.
336 ...binary data...
338 An example response:
340 HTTP/1.1 201 Created
341 Date: Mon, 21 Mar 2005 19:20:19 GMT
342 Server: CountBasic/2.0
343 ETag: "4c083-268-423f1dc6"
344 Location: http://example.org/stuff/beach.tiff
346
347 A trip to the beach
348 http://example.org/beach.jpg
349 uuid:4019de8a-7d08-4ca7-aee4-1a7cb92f3173
350
353
355 The server's response contains a 'Location' header that gives the URI
356 of the created media resource. The body of the response shows the
357 created item. The enclosure element contains more detailed
358 information about the created media resource.
360 8. Service Outlines
362 Many 2-Way RSS applications require a basic resource layout in order
363 to ease configuration requirements. Servers use Service Outline OPML
364 2.0 documents to convey information about related groups of 2-Way RSS
365 feeds. On a blogging service, for example, each group might
366 represent a distinct blog and associated resources. Normal RSS feeds
367 have a type attribute of 'rss'. 2-Way RSS feeds have a type attribute
368 of '2-way rss'. Read-only media feeds have a type attribute of
369 'media rss', and 2-Way media feeds have a type attribute of '2-way
370 media rss'.
372 Example Service Outline document:
374
375
376 My Blogs
377
378
379
381
383
384
386 Servers are not required to expose a Service Outline OPML document,
387 but experimental deployment experience has shown that a single
388 document which signals some basic information about the server's
389 configuration can greatly simplify client implementations. The
390 simplest useful Service Outline OPML document shows the location of a
391 single feed:
393
394
395 Flickr
396
397
398
400
401
403 If another 2-Way RSS feed is added, another element is added to the
404 Service Outline.
406
407
408 Flickr
409
410
411
413
415
416
418 More extensive services could require some amount of hierarchical
419 grouping.
421
422
423 Flickr
424
425
426
428
429
431
433
434
435
437 Many publishing systems include a categorization system. An outline
438 element with a type attribute value of 'categories' can be used to
439 list the available categories. In this example, the category feeds
440 are read-only.
442
443
444 Flickr
445
446
447
449
450
452
454
455
456
458 9. The 2-Way RSS Namespace
460 The 2-Way RSS namespace URI is 'http://example.org/2006/02/2WayRSS'
461 [@ will update]. The examples in this specifcation use the prefix
462 'r', but any prefix will do in practice.
464 9.1. The 'r:link' Element
466 The syntax and semantics of the 'r:link' element are identical to the
467 XHTML link element [XHTML], except for the namespace, and one other
468 exception: the r:link element allows arbitrary attributes.
470 10. References
472 [OBJECT] Berners-Lee, T., "Object Header lines in HTTP", 1992,
473 .
475 [OPML2] Winer, D., "OPML 2.0 Specification", March 2006,
476 .
478 [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
479 Extensions (MIME) Part One: Format of Internet Message
480 Bodies", RFC 2045, November 1996.
482 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
483 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
484 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
486 [RFC2822] Resnick, P., "Internet Message Format", RFC 2822,
487 April 2001.
489 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
490 Resource Identifier (URI): Generic Syntax", STD 66,
491 RFC 3986, January 2005.
493 [RSS] Cadenhead, et al., "Really Simple Syndication -- RSS
494 Advisory Board Announcements", .
496 [RSS091] Libby, D., "RSS 0.91 Spec, revision 3", June 1997, .
499 [RSS092] Winer, D., "RSS 0.92", December 2005,
500 .
502 [RSS2] Winer, D., "RSS 2.0", July 2003,
503 .
505 [XHTML] Pemberton, S., "XHTML. 1.0 The Extensible HyperText Markup
506 Language (Second Edition)", W3C REC REC-xhtml1-20020801,
507 August 2002,
508 .
510 [XML 1.0] Bray, T., Sperberg-McQueen, C., Paoli, J., Maler, E., and
511 F. Yergeau, "Extensible Markup Language (XML) 1.0 (Third
512 Edition)", W3C REC REC-xml-20040204, February 2004,
513 .
515 [1]
517 Appendix A. Acknowledgements
519 [@ will be updated prior to publication]
521 Author's Address
523 Robert Sayre
525 Email: rfsayre@boswijck.com
527 Intellectual Property Statement
529 The IETF takes no position regarding the validity or scope of any
530 Intellectual Property Rights or other rights that might be claimed to
531 pertain to the implementation or use of the technology described in
532 this document or the extent to which any license under such rights
533 might or might not be available; nor does it represent that it has
534 made any independent effort to identify any such rights. Information
535 on the procedures with respect to rights in RFC documents can be
536 found in BCP 78 and BCP 79.
538 Copies of IPR disclosures made to the IETF Secretariat and any
539 assurances of licenses to be made available, or the result of an
540 attempt made to obtain a general license or permission for the use of
541 such proprietary rights by implementers or users of this
542 specification can be obtained from the IETF on-line IPR repository at
543 http://www.ietf.org/ipr.
545 The IETF invites any interested party to bring to its attention any
546 copyrights, patents or patent applications, or other proprietary
547 rights that may cover technology that may be required to implement
548 this standard. Please address the information to the IETF at
549 ietf-ipr@ietf.org.
551 Disclaimer of Validity
553 This document and the information contained herein are provided on an
554 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
555 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
556 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
557 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
558 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
559 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
561 Copyright Statement
563 Copyright (C) The Internet Society (2006). This document is subject
564 to the rights, licenses and restrictions contained in BCP 78, and
565 except as set forth therein, the authors retain all their rights.
567 Acknowledgment
569 Funding for the RFC Editor function is currently provided by the
570 Internet Society.