<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" consensus="false" docName="draft-bormann-t2trg-stp-03" indexInclude="true" ipr="trust200902" prepTime="2020-04-07T23:59:49" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <!-- xml2rfc v2v3 conversion 2.39.0 -->
  <front>
    <title>The Series Transfer Pattern (STP)</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-t2trg-stp-03" stream="IETF"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization ascii="Universitaet Bremen TZI" showOnFrontPage="true">Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author initials="K." surname="Hartke" fullname="Klaus Hartke">
      <organization showOnFrontPage="true">Ericsson</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Stockholm</city>
          <code>16483</code>
          <country>Sweden</country>
        </postal>
        <email>klaus.hartke@ericsson.com</email>
      </address>
    </author>
    <date month="04" year="2020" day="08"/>
    <keyword>Internet-Draft</keyword>
    <abstract pn="section-abstract">
      <t pn="section-abstract-1">Many applications make use of Series of data items, i.e., an array of
data items where new items can be added over time.  Where such Series
are to be made available using REST protocols such as CoAP or HTTP,
the Series has to be mapped into a structure of one or more resources
and a protocol for a client to obtain the Series and to learn about
new items.</t>
      <t pn="section-abstract-2">Various protocols have been standardized that make Series-shaped data
available, with rather different properties and objectives.  The
present document is an attempt to extract a common underlying pattern
and to define media types and an access scheme that can be used right
away for further protocols that provide Series-shaped data.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t pn="section-boilerplate.1-1">
        This Internet-Draft is submitted in full conformance with the
        provisions of BCP 78 and BCP 79.
        </t>
        <t pn="section-boilerplate.1-2">
        Internet-Drafts are working documents of the Internet Engineering Task
        Force (IETF). Note that other groups may also distribute working
        documents as Internet-Drafts. The list of current Internet-Drafts is
        at <eref target="https://datatracker.ietf.org/drafts/current/" brackets="none"/>.
        </t>
        <t pn="section-boilerplate.1-3">
        Internet-Drafts are draft documents valid for a maximum of six months
        and may be updated, replaced, or obsoleted by other documents at any
        time. It is inappropriate to use Internet-Drafts as reference
        material or to cite them other than as "work in progress."
        </t>
        <t pn="section-boilerplate.1-4">
        This Internet-Draft will expire on 10 October 2020.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t pn="section-boilerplate.2-1">
            Copyright (c) 2020 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-objectives">Objectives</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-a-rest-series-transfer-patt">A REST Series Transfer Pattern (STP)</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-basic-collections">Basic collections</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-pagination-and-observing-li">Pagination and Observing linked lists</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t keepWithNext="true" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-cursor-pattern">The "cursor" pattern</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t pn="section-1-1">(TO DO: Insert an extended form of the abstract first here, expanding
the reference to <xref target="RFC7230" format="default" sectionFormat="of" derivedContent="RFC7230"/> and <xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/> in the process.)</t>
      <t pn="section-1-2">Examples for protocols that provide Series-shaped data are:</t>
      <ul spacing="normal" bare="false" empty="false" pn="section-1-3">
        <li pn="section-1-3.1">The Atom Syndication Format <xref target="RFC4287" format="default" sectionFormat="of" derivedContent="RFC4287"/> defines <em>feeds</em> as Series
of <em>entries</em> (links plus some metadata, which can often be much of
the content of an entry), where a feed is represented by a
collection resource that contains just a small number of the most
recent entries.  By polling a feed, a client can contain a fresh
view of the Series, with a focus on recent items.  If the client
does not poll often enough, it will <em>miss</em> items.</li>
        <li pn="section-1-3.2">Messaging protocols such as XMPP or SIMPLE transfer series of what
is often called "Instant Messages".  A publish/subscribe mechanism
allows a client to select sequences of messages that it is
interested in.</li>
        <li pn="section-1-3.3">Mail servers that provide interactive access to stored messages
present a Series to their clients.  Obviously, loss of messages is
frowned upon.</li>
        <li pn="section-1-3.4">CoAP Observe allows a client to observe a resource as it changes;
the client can collect the changes into a Series.  Observe is
focused on eventual consistency: a fresher data items simply
overwrites an older one.  The present document uses the observe
pattern to build a more general Series Transfer Pattern.</li>
        <li pn="section-1-3.5">Syslog is an interesting case of a Series Transfer.</li>
        <li pn="section-1-3.6">
          <xref target="RFC8641" format="default" sectionFormat="of" derivedContent="RFC8641"/>,
<xref target="I-D.voit-netmod-yang-notifications2" format="default" sectionFormat="of" derivedContent="I-D.voit-netmod-yang-notifications2"/>,
<xref target="RFC8639" format="default" sectionFormat="of" derivedContent="RFC8639"/>,
<xref target="I-D.ietf-netconf-notification-messages" format="default" sectionFormat="of" derivedContent="I-D.ietf-netconf-notification-messages"/>,
<xref target="RFC8650" format="default" sectionFormat="of" derivedContent="RFC8650"/>.</li>
        <li pn="section-1-3.7">An RTP stream can be viewed as an (somewhat extreme) case of a
Series; new items are just sent inside separate UDP packets.  A
sequence number allows to detect (but not normally ask for
retransmission of) missing items.  A timestamp as well as source
data (SSRC, CSRC) provide further common metadata that aid in the
processing of the Series items.</li>
        <li pn="section-1-3.8">An example of an ad-hoc design of a series transfer protocol is
<xref target="I-D.ietf-netconf-udp-pub-channel" format="default" sectionFormat="of" derivedContent="I-D.ietf-netconf-udp-pub-channel"/>.</li>
        <li pn="section-1-3.9">Server-sent events <xref target="sse" format="default" sectionFormat="of" derivedContent="sse"/> are a somewhat bizarre version of a series
transfer protocol.</li>
        <li pn="section-1-3.10">The Interface for Metadata Access Points (IF-MAP) specified by the
Trusted Computing Group and emerging derivatives of that protocol
create a series of updates to a graph representation of related
network-related security information. The requests created by
IF-MAP clients are bundled operations of updates to a
MAP Graph, which compose a Series Transfer Pattern of bundled atomic
operations that ensure the integrity of the MAP Graph. [Henk Birkholz]</li>
        <li pn="section-1-3.11">netflow/IPFIX was defined to transfer a series of data items about flows.
Information about PDU flows accounted by network interfaces of
endpoints is emitted in a series of counter bundles via the IPFIX
protocol. Only a series of these continuous Flow Records creates a
meaningful bigger picture about the current traffic in the network
topology of an administrative domain. Depending on the characteristics
measured, loss of a Flow Record can range from harmless to missing the
only vital counter measurement.  [Henk Birkholz]</li>
        <li pn="section-1-3.12">TO DO: Add more items.</li>
      </ul>
      <t pn="section-1-4"><xref target="I-D.birkholz-yang-push-coap-problemstatement" format="default" sectionFormat="of" derivedContent="I-D.birkholz-yang-push-coap-problemstatement"/> is a problem
statement that will require the design of another scheme to transfer
Series-shaped data.</t>
    </section>
    <section anchor="objectives" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-objectives">Objectives</name>
      <t pn="section-2-1">Series transfer applications may have rather different objectives.</t>
      <ul spacing="normal" bare="false" empty="false" pn="section-2-2">
        <li pn="section-2-2.1">The completeness of the Series transfer may be of utmost importance
(e.g., if each item represents a sale), it may be desirable but can
be jettisoned in an overload situation, or it may just be a likely
outcome with a very active client (e.g., with Atom).  Note that
there is never a way to <em>guarantee</em> completeness unless all of the
rate and size of incoming new items, the transfer capacity
available, and the processing capabilities of the client are
controlled; however, system designs may want to give the illusion of
"reliability".</li>
        <li pn="section-2-2.2">Minimizing the latency of the transfer may be important, as may be
limiting it below a defined maximum (note that these are different
objectives).  The latter can be supported in a polling system by
polling at least as often as that maximum latency; this may be
considered inefficient and "push" mechanisms may be developed.  Mail
environments have developed "push" services to enable minimizing the
latency.  Where latency requirements go below the time that might be
needed for an end-to-end retransmission, error concealment may
provide an acceptable user experience (e.g., in RTP).</li>
      </ul>
      <t pn="section-2-3">In general, minimizing latency and ensuring completeness are competing
objectives.</t>
      <t pn="section-2-4">Series transfer environments sometimes centralize information
distribution functions, leading to "broker" architectures (often
combined with the "publish/subscribe" pattern).  With brokers, Series
publishers may use an entirely different interface to the brokers from
that used by the receiving clients, or the interfaces can be designed
so they are similar for all the forwarding steps.</t>
    </section>
    <section anchor="stp" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-a-rest-series-transfer-patt">A REST Series Transfer Pattern (STP)</name>
      <section anchor="basic-collections" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-basic-collections">Basic collections</name>
        <t pn="section-3.1-1">A series of items can be represented by a single collection resource:</t>
        <figure anchor="fig-collection" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-a-collection-of-items">A collection of items</name>
          <artset pn="section-3.1-2.1">
            <artwork type="svg" name="" align="left" alt="" pn="section-3.1-2.1.1"><svg xmlns="http://www.w3.org/2000/svg" class="diagram" version="1.1" height="249" width="128" viewBox="0 0 128.0 249.0">
                <g transform="translate(8,16)">
                  <path d="M 0,24 L 112,24" fill="none" stroke="black"/>
                  <path d="M 0,72 L 112,72" fill="none" stroke="black"/>
                  <path d="M 0,120 L 112,120" fill="none" stroke="black"/>
                  <path d="M 0,184 L 112,184" fill="none" stroke="black"/>
                  <path d="M 0,232 L 112,232" fill="none" stroke="black"/>
                  <path d="M 0,32 L 0,224" fill="none" stroke="black"/>
                  <path d="M 56,128 L 56,144" fill="none" stroke="black"/>
                  <path d="M 56,144 L 56,160" fill="none" stroke="black"/>
                  <path d="M 112,32 L 112,224" fill="none" stroke="black"/>
                  <path d="M 0,24 L 0,32" fill="none" stroke="black"/>
                  <path d="M 0,224 L 0,232" fill="none" stroke="black"/>
                  <path d="M 112,24 L 112,32" fill="none" stroke="black"/>
                  <path d="M 112,224 L 112,232" fill="none" stroke="black"/>
                  <text text-anchor="middle" font-family="monospace" x="16" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="212" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="212" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="212" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="212" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="100" fill="black" font-size="1em">0</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="212" fill="black" font-size="1em">e</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" name="" align="left" alt="" pn="section-3.1-2.1.2"><![CDATA[
 _____________
|             |
| item 11     |
|_____________|
|             |
| item 10     |
|_____________|
|      .      |
|      .      |
|      .      |
|_____________|
|             |
| item 1      |
|_____________|
]]></artwork>
          </artset>
        </figure>
        <t pn="section-3.1-3">While this is adequate in many cases, it has a number of limitations:</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-3.1-4">
          <li pn="section-3.1-4.1">
            <t pn="section-3.1-4.1.1">Each retrieval fetches the entire collection
            </t>
            <ul spacing="normal" bare="false" empty="false" pn="section-3.1-4.1.2">
              <li pn="section-3.1-4.1.2.1">As long as the collection does not change, this can be mitigated
with ETags (Section 5.10.6 of<xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/>, Section 2.3 of <xref target="RFC7232" format="default" sectionFormat="of" derivedContent="RFC7232"/>).</li>
            </ul>
          </li>
          <li pn="section-3.1-4.2">When the collection becomes too large, the server has to prune older
items.  These then no longer can be retrieved, and there is even no
way for the server to indicate that there used to be older items.</li>
        </ul>
      </section>
      <section anchor="pagination-and-observing-linked-lists" numbered="true" toc="include" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-pagination-and-observing-li">Pagination and Observing linked lists</name>
        <t pn="section-3.2-1">In the Browser Web, it is usual to provide <em>Pagination</em> for collection
resources that can grow large (e.g., search results):</t>
        <figure anchor="fig-pagination1" align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-a-paginated-collection-of-i">A paginated collection of items</name>
          <artset pn="section-3.2-2.1">
            <artwork type="svg" name="" align="left" alt="" pn="section-3.2-2.1.1"><svg xmlns="http://www.w3.org/2000/svg" class="diagram" version="1.1" height="201" width="512" viewBox="0 0 512.0 201.0">
                <g transform="translate(8,16)">
                  <path d="M 152,48 L 184,48" fill="none" stroke="black"/>
                  <path d="M 344,48 L 376,48" fill="none" stroke="black"/>
                  <path d="M 64,144 L 152,144" fill="none" stroke="black"/>
                  <path d="M 256,144 L 344,144" fill="none" stroke="black"/>
                  <path d="M 0,24 L 112,24" fill="none" stroke="black"/>
                  <path d="M 192,24 L 304,24" fill="none" stroke="black"/>
                  <path d="M 384,24 L 496,24" fill="none" stroke="black"/>
                  <path d="M 0,72 L 112,72" fill="none" stroke="black"/>
                  <path d="M 192,72 L 304,72" fill="none" stroke="black"/>
                  <path d="M 384,72 L 496,72" fill="none" stroke="black"/>
                  <path d="M 0,120 L 112,120" fill="none" stroke="black"/>
                  <path d="M 192,120 L 304,120" fill="none" stroke="black"/>
                  <path d="M 384,120 L 496,120" fill="none" stroke="black"/>
                  <path d="M 0,168 L 112,168" fill="none" stroke="black"/>
                  <path d="M 192,168 L 304,168" fill="none" stroke="black"/>
                  <path d="M 0,32 L 0,160" fill="none" stroke="black"/>
                  <path d="M 112,32 L 112,128" fill="none" stroke="black"/>
                  <path d="M 112,152 L 112,168" fill="none" stroke="black"/>
                  <path d="M 152,48 L 152,144" fill="none" stroke="black"/>
                  <path d="M 192,32 L 192,160" fill="none" stroke="black"/>
                  <path d="M 304,32 L 304,128" fill="none" stroke="black"/>
                  <path d="M 304,152 L 304,168" fill="none" stroke="black"/>
                  <path d="M 344,48 L 344,64" fill="none" stroke="black"/>
                  <path d="M 344,128 L 344,144" fill="none" stroke="black"/>
                  <path d="M 384,32 L 384,112" fill="none" stroke="black"/>
                  <path d="M 496,32 L 496,112" fill="none" stroke="black"/>
                  <path d="M 0,24 L 0,32" fill="none" stroke="black"/>
                  <path d="M 0,160 L 0,168" fill="none" stroke="black"/>
                  <path d="M 112,24 L 112,32" fill="none" stroke="black"/>
                  <path d="M 112,128 L 112,136" fill="none" stroke="black"/>
                  <path d="M 112,152 L 112,160" fill="none" stroke="black"/>
                  <path d="M 192,24 L 192,32" fill="none" stroke="black"/>
                  <path d="M 192,160 L 192,168" fill="none" stroke="black"/>
                  <path d="M 304,24 L 304,32" fill="none" stroke="black"/>
                  <path d="M 304,128 L 304,136" fill="none" stroke="black"/>
                  <path d="M 304,152 L 304,160" fill="none" stroke="black"/>
                  <path d="M 384,24 L 384,32" fill="none" stroke="black"/>
                  <path d="M 384,112 L 384,120" fill="none" stroke="black"/>
                  <path d="M 496,24 L 496,32" fill="none" stroke="black"/>
                  <path d="M 496,112 L 496,120" fill="none" stroke="black"/>
                  <polygon points="192.000000,48.000000 180.000000,42.400002 180.000000,53.599998" transform="rotate(0.000000, 184.000000, 48.000000)" fill="black"/>
                  <polygon points="384.000000,48.000000 372.000000,42.400002 372.000000,53.599998" transform="rotate(0.000000, 376.000000, 48.000000)" fill="black"/>
                  <text text-anchor="middle" font-family="monospace" x="344" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="148" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="180" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="352" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="148" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="148" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="148" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="132" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="148" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="180" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="52" fill="black" font-size="1em">9</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="432" y="132" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="180" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="180" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="360" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="328" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="52" fill="black" font-size="1em">2</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="132" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="148" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="72" y="180" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="180" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="132" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="180" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="148" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="180" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="100" fill="black" font-size="1em">8</text>
                  <text text-anchor="middle" font-family="monospace" x="456" y="132" fill="black" font-size="1em">M</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="100" fill="black" font-size="1em">0</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="240" y="180" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="336" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="148" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="264" y="180" fill="black" font-size="1em">2</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="52" fill="black" font-size="1em">t</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" name="" align="left" alt="" pn="section-3.2-2.1.2"><![CDATA[
 _____________           _____________           _____________
|             |         |             |         |             |
| item 11     |    +--->| item 9      |    +--->| item 2      |
|_____________|    |    |_____________|    |    |_____________|
|             |    |    |             |         |             |
| item 10     |    |    | item 8      |  :::::  | item 1      |
|_____________|    |    |_____________|         |_____________|
|             |    |    |             |    |        page M
| link  -----------+    | link  -----------+
|_____________|         |_____________|
    page 1                  page 2
]]></artwork>
          </artset>
        </figure>
        <t pn="section-3.2-3">Without modification, this does not work well for resources that
actually change by themselves: Once a new page needs to be added,
what previously was page 1 now becomes page 2.  Obviously, the naming
of pages better remains unchanged with new pages added a the front.</t>
        <figure anchor="fig-pagination2" align="left" suppress-title="false" pn="figure-3">
          <name slugifiedName="name-pagination-with-stable-name">Pagination with stable names</name>
          <artset pn="section-3.2-4.1">
            <artwork type="svg" name="" align="left" alt="" pn="section-3.2-4.1.1"><svg xmlns="http://www.w3.org/2000/svg" class="diagram" version="1.1" height="201" width="512" viewBox="0 0 512.0 201.0">
                <g transform="translate(8,16)">
                  <path d="M 152,48 L 184,48" fill="none" stroke="black"/>
                  <path d="M 344,48 L 376,48" fill="none" stroke="black"/>
                  <path d="M 64,144 L 152,144" fill="none" stroke="black"/>
                  <path d="M 256,144 L 344,144" fill="none" stroke="black"/>
                  <path d="M 0,24 L 112,24" fill="none" stroke="black"/>
                  <path d="M 192,24 L 304,24" fill="none" stroke="black"/>
                  <path d="M 384,24 L 496,24" fill="none" stroke="black"/>
                  <path d="M 0,72 L 112,72" fill="none" stroke="black"/>
                  <path d="M 192,72 L 304,72" fill="none" stroke="black"/>
                  <path d="M 384,72 L 496,72" fill="none" stroke="black"/>
                  <path d="M 0,120 L 112,120" fill="none" stroke="black"/>
                  <path d="M 192,120 L 304,120" fill="none" stroke="black"/>
                  <path d="M 384,120 L 496,120" fill="none" stroke="black"/>
                  <path d="M 0,168 L 112,168" fill="none" stroke="black"/>
                  <path d="M 192,168 L 304,168" fill="none" stroke="black"/>
                  <path d="M 0,32 L 0,160" fill="none" stroke="black"/>
                  <path d="M 112,32 L 112,128" fill="none" stroke="black"/>
                  <path d="M 112,152 L 112,168" fill="none" stroke="black"/>
                  <path d="M 152,48 L 152,144" fill="none" stroke="black"/>
                  <path d="M 192,32 L 192,160" fill="none" stroke="black"/>
                  <path d="M 304,32 L 304,128" fill="none" stroke="black"/>
                  <path d="M 304,152 L 304,168" fill="none" stroke="black"/>
                  <path d="M 344,48 L 344,64" fill="none" stroke="black"/>
                  <path d="M 344,128 L 344,144" fill="none" stroke="black"/>
                  <path d="M 384,32 L 384,112" fill="none" stroke="black"/>
                  <path d="M 496,32 L 496,112" fill="none" stroke="black"/>
                  <path d="M 0,24 L 0,32" fill="none" stroke="black"/>
                  <path d="M 0,160 L 0,168" fill="none" stroke="black"/>
                  <path d="M 112,24 L 112,32" fill="none" stroke="black"/>
                  <path d="M 112,128 L 112,136" fill="none" stroke="black"/>
                  <path d="M 112,152 L 112,160" fill="none" stroke="black"/>
                  <path d="M 192,24 L 192,32" fill="none" stroke="black"/>
                  <path d="M 192,160 L 192,168" fill="none" stroke="black"/>
                  <path d="M 304,24 L 304,32" fill="none" stroke="black"/>
                  <path d="M 304,128 L 304,136" fill="none" stroke="black"/>
                  <path d="M 304,152 L 304,160" fill="none" stroke="black"/>
                  <path d="M 384,24 L 384,32" fill="none" stroke="black"/>
                  <path d="M 384,112 L 384,120" fill="none" stroke="black"/>
                  <path d="M 496,24 L 496,32" fill="none" stroke="black"/>
                  <path d="M 496,112 L 496,120" fill="none" stroke="black"/>
                  <polygon points="192.000000,48.000000 180.000000,42.400002 180.000000,53.599998" transform="rotate(0.000000, 184.000000, 48.000000)" fill="black"/>
                  <polygon points="384.000000,48.000000 372.000000,42.400002 372.000000,53.599998" transform="rotate(0.000000, 376.000000, 48.000000)" fill="black"/>
                  <text text-anchor="middle" font-family="monospace" x="248" y="100" fill="black" font-size="1em">8</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="180" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="328" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="148" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="272" y="180" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="280" y="180" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="296" y="180" fill="black" font-size="1em">2</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="360" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="132" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="148" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="432" y="132" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="456" y="132" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="104" y="180" fill="black" font-size="1em">M</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="148" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="88" y="180" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="52" fill="black" font-size="1em">2</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="100" fill="black" font-size="1em">0</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="148" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="264" y="180" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="352" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="148" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="148" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="344" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="132" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="256" y="180" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="52" fill="black" font-size="1em">9</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="148" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="148" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="72" y="180" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="336" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="132" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="80" y="180" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="100" fill="black" font-size="1em">m</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" name="" align="left" alt="" pn="section-3.2-4.1.2"><![CDATA[
 _____________           _____________           _____________
|             |         |             |         |             |
| item 11     |    +--->| item 9      |    +--->| item 2      |
|_____________|    |    |_____________|    |    |_____________|
|             |    |    |             |         |             |
| item 10     |    |    | item 8      |  :::::  | item 1      |
|_____________|    |    |_____________|         |_____________|
|             |    |    |             |    |        page 1
| link  -----------+    | link  -----------+
|_____________|         |_____________|
        page M                  page 2
]]></artwork>
          </artset>
        </figure>
        <t pn="section-3.2-5">However, now the client has no idea what initial page to request to
get the freshest items and the head of the list.  It is easy to add a
link to the freshest page:</t>
        <figure anchor="fig-linked-list" align="left" suppress-title="false" pn="figure-4">
          <name slugifiedName="name-pagination-with-stable-names">Pagination with stable names</name>
          <artset pn="section-3.2-6.1">
            <artwork type="svg" name="" align="left" alt="" pn="section-3.2-6.1.1"><svg xmlns="http://www.w3.org/2000/svg" class="diagram" version="1.1" height="201" width="512" viewBox="0 0 512.0 201.0">
                <g transform="translate(8,16)">
                  <path d="M 64,48 L 184,48" fill="none" stroke="black"/>
                  <path d="M 344,48 L 376,48" fill="none" stroke="black"/>
                  <path d="M 256,144 L 344,144" fill="none" stroke="black"/>
                  <path d="M 0,24 L 112,24" fill="none" stroke="black"/>
                  <path d="M 192,24 L 304,24" fill="none" stroke="black"/>
                  <path d="M 384,24 L 496,24" fill="none" stroke="black"/>
                  <path d="M 0,72 L 112,72" fill="none" stroke="black"/>
                  <path d="M 192,72 L 304,72" fill="none" stroke="black"/>
                  <path d="M 384,72 L 496,72" fill="none" stroke="black"/>
                  <path d="M 192,120 L 304,120" fill="none" stroke="black"/>
                  <path d="M 384,120 L 496,120" fill="none" stroke="black"/>
                  <path d="M 192,168 L 304,168" fill="none" stroke="black"/>
                  <path d="M 0,32 L 0,64" fill="none" stroke="black"/>
                  <path d="M 112,24 L 112,40" fill="none" stroke="black"/>
                  <path d="M 112,56 L 112,72" fill="none" stroke="black"/>
                  <path d="M 192,32 L 192,160" fill="none" stroke="black"/>
                  <path d="M 304,32 L 304,128" fill="none" stroke="black"/>
                  <path d="M 304,152 L 304,168" fill="none" stroke="black"/>
                  <path d="M 344,48 L 344,64" fill="none" stroke="black"/>
                  <path d="M 344,128 L 344,144" fill="none" stroke="black"/>
                  <path d="M 384,32 L 384,112" fill="none" stroke="black"/>
                  <path d="M 496,32 L 496,112" fill="none" stroke="black"/>
                  <path d="M 0,24 L 0,32" fill="none" stroke="black"/>
                  <path d="M 0,64 L 0,72" fill="none" stroke="black"/>
                  <path d="M 112,24 L 112,32" fill="none" stroke="black"/>
                  <path d="M 112,56 L 112,64" fill="none" stroke="black"/>
                  <path d="M 192,24 L 192,32" fill="none" stroke="black"/>
                  <path d="M 192,160 L 192,168" fill="none" stroke="black"/>
                  <path d="M 304,24 L 304,32" fill="none" stroke="black"/>
                  <path d="M 304,128 L 304,136" fill="none" stroke="black"/>
                  <path d="M 304,152 L 304,160" fill="none" stroke="black"/>
                  <path d="M 384,24 L 384,32" fill="none" stroke="black"/>
                  <path d="M 384,112 L 384,120" fill="none" stroke="black"/>
                  <path d="M 496,24 L 496,32" fill="none" stroke="black"/>
                  <path d="M 496,112 L 496,120" fill="none" stroke="black"/>
                  <polygon points="192.000000,48.000000 180.000000,42.400002 180.000000,53.599998" transform="rotate(0.000000, 184.000000, 48.000000)" fill="black"/>
                  <polygon points="384.000000,48.000000 372.000000,42.400002 372.000000,53.599998" transform="rotate(0.000000, 376.000000, 48.000000)" fill="black"/>
                  <text text-anchor="middle" font-family="monospace" x="232" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="84" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="148" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="52" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="52" fill="black" font-size="1em">2</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="352" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="360" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="240" y="180" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="52" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="180" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="148" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="180" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="328" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="84" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="344" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="132" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="180" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="132" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="148" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="84" fill="black" font-size="1em">d</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="132" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="456" y="132" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="264" y="180" fill="black" font-size="1em">M</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="52" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="84" fill="black" font-size="1em">h</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="148" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="256" y="100" fill="black" font-size="1em">0</text>
                  <text text-anchor="middle" font-family="monospace" x="336" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="432" y="132" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="256" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="52" fill="black" font-size="1em">t</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" name="" align="left" alt="" pn="section-3.2-6.1.2"><![CDATA[
 _____________           _____________           _____________
|             |         |             |         |             |
| link  --------------->| item 11     |    +--->| item 2      |
|_____________|         |_____________|    |    |_____________|
     head               |             |         |             |
                        | item 10     |  :::::  | item 1      |
                        |_____________|         |_____________|
                        |             |    |        page 1
                        | link  -----------+
                        |_____________|
                            page M
]]></artwork>
          </artset>
        </figure>
        <t pn="section-3.2-7">The head of the linked list can now be simply observed; the addition
of pages will then be notified to the observer.</t>
        <t pn="section-3.2-8">As usual in series transfer, the following considerations remain:</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-3.2-9">
          <li pn="section-3.2-9.1">
            <t pn="section-3.2-9.1.1">When can the server decide to no longer retain older items?
            </t>
            <ul spacing="normal" bare="false" empty="false" pn="section-3.2-9.1.2">
              <li pn="section-3.2-9.1.2.1">
                <t pn="section-3.2-9.1.2.1.1">There may be a desire for an observer to be able to catch all
items in the series.
                </t>
                <ul spacing="normal" bare="false" empty="false" pn="section-3.2-9.1.2.1.2">
                  <li pn="section-3.2-9.1.2.1.2.1">How does the server know who are the observers?  E.g., what to
do with newly joining observers?</li>
                  <li pn="section-3.2-9.1.2.1.2.2">How does an observer signal that it has caught up (to a specific
item)?</li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-3.2-9.2">What to do when the decision to remove items from the list cannot be
made and there is no room for new items?</li>
        </ul>
        <t pn="section-3.2-10">The link head can also include items that have so far not been added
to pages; this can be used to fill up pages evenly without them ever
changing.  Obviously, the best number of items to prenotify in this
way as well as the best time to open a new page are different for
different applications.</t>
      </section>
      <section anchor="the-cursor-pattern" numbered="true" toc="include" removeInRFC="false" pn="section-3.3">
        <name slugifiedName="name-the-cursor-pattern">The "cursor" pattern</name>
        <t pn="section-3.3-1">A GET on a resource representing a Series may return a collection item
that contains the following pieces of information</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-3.3-2">
          <li pn="section-3.3-2.1">
            <t pn="section-3.3-2.1.1">An array of Series items, either as an array of media-typed objects
in a suitable representation format (e.g., CBOR, MIME) or by using
an array-like media type (e.g., SenML).
            </t>
            <ul spacing="normal" bare="false" empty="false" pn="section-3.3-2.1.2">
              <li pn="section-3.3-2.1.2.1">Items may be full items or limit themselves to some metadata and
a link; the client can then follow that link if it is interested
in the data (possibly basing that decision on the metadata and/or
a measure of load).</li>
            </ul>
          </li>
          <li pn="section-3.3-2.2">A "cursor" that can then be used as a parameter in further GET
requests (see below) in order to receive only newer items than those
received with this transfer.</li>
          <li pn="section-3.3-2.3">A "more bit" that indicates whether such further items already exist
but could not be returned in the present response.</li>
        </ul>
        <t pn="section-3.3-3">In <xref target="fig-cursor1" format="default" sectionFormat="of" derivedContent="Figure 5"/>, the cursor is implemented as a URI that can be used
as a link to the next page.</t>
        <figure anchor="fig-cursor1" align="left" suppress-title="false" pn="figure-5">
          <name slugifiedName="name-cursor-pattern-pictured-as-">Cursor pattern pictured as pagination</name>
          <artset pn="section-3.3-4.1">
            <artwork type="svg" name="" align="left" alt="" pn="section-3.3-4.1.1"><svg xmlns="http://www.w3.org/2000/svg" class="diagram" version="1.1" height="201" width="512" viewBox="0 0 512.0 201.0">
                <g transform="translate(8,16)">
                  <path d="M 120,48 L 152,48" fill="none" stroke="black"/>
                  <path d="M 312,48 L 432,48" fill="none" stroke="black"/>
                  <path d="M 152,144 L 240,144" fill="none" stroke="black"/>
                  <path d="M 0,24 L 112,24" fill="none" stroke="black"/>
                  <path d="M 192,24 L 304,24" fill="none" stroke="black"/>
                  <path d="M 384,24 L 496,24" fill="none" stroke="black"/>
                  <path d="M 0,72 L 112,72" fill="none" stroke="black"/>
                  <path d="M 192,72 L 304,72" fill="none" stroke="black"/>
                  <path d="M 384,72 L 496,72" fill="none" stroke="black"/>
                  <path d="M 0,120 L 112,120" fill="none" stroke="black"/>
                  <path d="M 192,120 L 304,120" fill="none" stroke="black"/>
                  <path d="M 192,168 L 304,168" fill="none" stroke="black"/>
                  <path d="M 0,32 L 0,112" fill="none" stroke="black"/>
                  <path d="M 112,32 L 112,112" fill="none" stroke="black"/>
                  <path d="M 152,48 L 152,64" fill="none" stroke="black"/>
                  <path d="M 152,128 L 152,144" fill="none" stroke="black"/>
                  <path d="M 192,32 L 192,128" fill="none" stroke="black"/>
                  <path d="M 192,152 L 192,168" fill="none" stroke="black"/>
                  <path d="M 304,32 L 304,160" fill="none" stroke="black"/>
                  <path d="M 384,24 L 384,40" fill="none" stroke="black"/>
                  <path d="M 384,56 L 384,72" fill="none" stroke="black"/>
                  <path d="M 496,32 L 496,64" fill="none" stroke="black"/>
                  <path d="M 0,24 L 0,32" fill="none" stroke="black"/>
                  <path d="M 0,112 L 0,120" fill="none" stroke="black"/>
                  <path d="M 112,24 L 112,32" fill="none" stroke="black"/>
                  <path d="M 112,112 L 112,120" fill="none" stroke="black"/>
                  <path d="M 192,24 L 192,32" fill="none" stroke="black"/>
                  <path d="M 192,128 L 192,136" fill="none" stroke="black"/>
                  <path d="M 192,152 L 192,160" fill="none" stroke="black"/>
                  <path d="M 304,24 L 304,32" fill="none" stroke="black"/>
                  <path d="M 304,160 L 304,168" fill="none" stroke="black"/>
                  <path d="M 384,24 L 384,32" fill="none" stroke="black"/>
                  <path d="M 384,56 L 384,64" fill="none" stroke="black"/>
                  <path d="M 496,24 L 496,32" fill="none" stroke="black"/>
                  <path d="M 496,64 L 496,72" fill="none" stroke="black"/>
                  <polygon points="128.000000,48.000000 116.000000,42.400002 116.000000,53.599998" transform="rotate(180.000000, 120.000000, 48.000000)" fill="black"/>
                  <polygon points="320.000000,48.000000 308.000000,42.400002 308.000000,53.599998" transform="rotate(180.000000, 312.000000, 48.000000)" fill="black"/>
                  <text text-anchor="middle" font-family="monospace" x="32" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="132" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="52" fill="black" font-size="1em">0</text>
                  <text text-anchor="middle" font-family="monospace" x="472" y="52" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="100" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="100" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="132" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="272" y="148" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="456" y="52" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="432" y="84" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="136" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="168" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="132" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="480" y="52" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="84" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="160" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="72" y="132" fill="black" font-size="1em">M</text>
                  <text text-anchor="middle" font-family="monospace" x="288" y="148" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="180" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="52" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="464" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="144" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="100" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="180" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="52" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="84" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="448" y="84" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="264" y="180" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="100" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="152" y="100" fill="black" font-size="1em">:</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="100" fill="black" font-size="1em">2</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="132" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="52" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="240" y="180" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="264" y="148" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="280" y="148" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="180" fill="black" font-size="1em">p</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" name="" align="left" alt="" pn="section-3.3-4.1.2"><![CDATA[
 _____________           _____________           _____________
|             |         |             |         |             |
| item 10     |<---+    | item 1      |<---------------  link |
|_____________|    |    |_____________|         |_____________|
|             |         |             |              tail
| item 11     |  :::::  | item 2      |
|_____________|         |_____________|
    page M         |    |             |
                   +-----------  link |
                        |_____________|
                            page 1
]]></artwork>
          </artset>
        </figure>
        <t pn="section-3.3-5">A GET may be enhanced with additional parameters (possibly turning it
into a FETCH):</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-3.3-6">
          <li pn="section-3.3-6.1">The cursor.</li>
          <li pn="section-3.3-6.2">A "wait bit" that indicates whether a (possibly empty) reply should
be given right away or the server should wait for new items to
become available.  (To avoid the equivalence of the "silly window
syndrome", the wait bit may be enhanced by a minimum number of items
and a timeout after which even a smaller number is made available.)
In effect, this requests a form of "long polling"; see
<xref target="RFC6202" format="default" sectionFormat="of" derivedContent="RFC6202"/> for some considerations for this in HTTP.</li>
        </ul>
        <t pn="section-3.3-7">A server may implement a form of custody transfer by interpreting the
cursor as an acknowledgement that the client has received all data up
to the cursor.  This is not necessarily acting as an unsafe request
("destructive GET"), as other clients may be active that have not yet
received all these data.  To implement a full custody semantics, the
server needs to be aware of all the clients that expect a full Series
Transfer (a classical group management problem).</t>
        <t pn="section-3.3-8">(Explain how Observe can help.  Can it?)</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-iana-considerations">IANA considerations</name>
      <t pn="section-4-1">This memo registers a number of media types: TO DO.</t>
      <ul spacing="normal" bare="false" empty="false" pn="section-4-2">
        <li pn="section-4-2.1">
          <t pn="section-4-2.1.1">A media type for FETCH selectors (<xref target="stp" format="default" sectionFormat="of" derivedContent="Section 3"/>):
          </t>
          <ul spacing="normal" bare="false" empty="false" pn="section-4-2.1.2">
            <li pn="section-4-2.1.2.1">An alternative way to encode this information into the URI
of a GET should also be available.</li>
          </ul>
        </li>
        <li pn="section-4-2.2">A Series media type as alluded to in <xref target="stp" format="default" sectionFormat="of" derivedContent="Section 3"/>.</li>
      </ul>
    </section>
    <section anchor="security-considerations" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-security-considerations">Security considerations</name>
      <t pn="section-5-1">TO DO</t>
    </section>
  </middle>
  <back>
    <references pn="section-6">
      <name slugifiedName="name-informative-references">Informative References</name>
      <reference anchor="I-D.birkholz-yang-push-coap-problemstatement" target="http://www.ietf.org/internet-drafts/draft-birkholz-yang-push-coap-problemstatement-00.txt" quoteTitle="true" derivedAnchor="I-D.birkholz-yang-push-coap-problemstatement">
        <front>
          <title>YANG Push Operations for CoMI</title>
          <seriesInfo name="Internet-Draft" value="draft-birkholz-yang-push-coap-problemstatement-00"/>
          <author initials="H" surname="Birkholz" fullname="Henk Birkholz">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="T" surname="Zhou" fullname="Tianran Zhou">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="X" surname="Liu" fullname="Xufeng Liu">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="E" surname="Voit" fullname="Eric Voit">
            <organization showOnFrontPage="true"/>
          </author>
          <date month="October" day="18" year="2017"/>
          <abstract>
            <t>This document provides a problem statement, derives an initial gap analysis and illustrates a first set of solution approaches in regard to augmenting YANG data stores based on the CoAP Management Interface with YANG Push capabilities.  A binary transfer mechanism for YANG Subscribed Notifications addresses both the requirements of constrained-node networks and the need for semantic interoperability via self-descriptiveness of the corresponding data in motion.</t>
          </abstract>
        </front>
        <refcontent>Work in Progress</refcontent>
      </reference>
      <reference anchor="I-D.ietf-netconf-notification-messages" target="http://www.ietf.org/internet-drafts/draft-ietf-netconf-notification-messages-08.txt" quoteTitle="true" derivedAnchor="I-D.ietf-netconf-notification-messages">
        <front>
          <title>Notification Message Headers and Bundles</title>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-notification-messages-08"/>
          <author initials="E" surname="Voit" fullname="Eric Voit">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="T" surname="Jenkins" fullname="Tim Jenkins">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="H" surname="Birkholz" fullname="Henk Birkholz">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A" surname="Bierman" fullname="Andy Bierman">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A" surname="Clemm" fullname="Alexander Clemm">
            <organization showOnFrontPage="true"/>
          </author>
          <date month="November" day="17" year="2019"/>
          <abstract>
            <t>This document defines a new notification message format.  Included are:  o  a new notification mechanism and encoding to replace the one way operation of RFC-5277  o  a set of common, transport agnostic message header objects.  o  how to bundle multiple event records into a single notification message.  o  how to ensure these new capabilities are only used with capable receivers.</t>
          </abstract>
        </front>
        <refcontent>Work in Progress</refcontent>
      </reference>
      <reference anchor="I-D.ietf-netconf-udp-pub-channel" target="http://www.ietf.org/internet-drafts/draft-ietf-netconf-udp-pub-channel-05.txt" quoteTitle="true" derivedAnchor="I-D.ietf-netconf-udp-pub-channel">
        <front>
          <title>UDP based Publication Channel for Streaming Telemetry</title>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-udp-pub-channel-05"/>
          <author initials="G" surname="Zheng" fullname="Guangying Zheng">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="T" surname="Zhou" fullname="Tianran Zhou">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A" surname="Clemm" fullname="Alexander Clemm">
            <organization showOnFrontPage="true"/>
          </author>
          <date month="March" day="11" year="2019"/>
          <abstract>
            <t>This document describes a UDP-based publication channel for streaming telemetry use to collect data from devices.  A new shim header is proposed to facilitate the distributed data collection mechanism which directly pushes data from line cards to the collector.  Because of the lightweight UDP encapsulation, higher frequency and better transit performance can be achieved.</t>
          </abstract>
        </front>
        <refcontent>Work in Progress</refcontent>
      </reference>
      <reference anchor="I-D.voit-netmod-yang-notifications2" target="http://www.ietf.org/internet-drafts/draft-voit-netmod-yang-notifications2-00.txt" quoteTitle="true" derivedAnchor="I-D.voit-netmod-yang-notifications2">
        <front>
          <title>YANG Notification Headers and Bundles</title>
          <seriesInfo name="Internet-Draft" value="draft-voit-netmod-yang-notifications2-00"/>
          <author initials="E" surname="Voit" fullname="Eric Voit">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A" surname="Bierman" fullname="Andy Bierman">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A" surname="Clemm" fullname="Alexander Clemm">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="T" surname="Jenkins" fullname="Tim Jenkins">
            <organization showOnFrontPage="true"/>
          </author>
          <date month="February" day="24" year="2017"/>
          <abstract>
            <t>There are useful capabilities not available with existing YANG notifications as described in Section 7.16 of [RFC7950].  These include:</t>
          </abstract>
        </front>
        <refcontent>Work in Progress</refcontent>
      </reference>
      <reference anchor="RFC4287" target="https://www.rfc-editor.org/info/rfc4287" quoteTitle="true" derivedAnchor="RFC4287">
        <front>
          <title>The Atom Syndication Format</title>
          <seriesInfo name="RFC" value="4287"/>
          <seriesInfo name="DOI" value="10.17487/RFC4287"/>
          <author initials="M." surname="Nottingham" fullname="M. Nottingham" role="editor">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="R." surname="Sayre" fullname="R. Sayre" role="editor">
            <organization showOnFrontPage="true"/>
          </author>
          <date year="2005" month="December"/>
          <abstract>
            <t>This document specifies Atom, an XML-based Web content and metadata syndication format.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC6202" target="https://www.rfc-editor.org/info/rfc6202" quoteTitle="true" derivedAnchor="RFC6202">
        <front>
          <title>Known Issues and Best Practices for the Use of Long Polling and Streaming in Bidirectional HTTP</title>
          <seriesInfo name="RFC" value="6202"/>
          <seriesInfo name="DOI" value="10.17487/RFC6202"/>
          <author initials="S." surname="Loreto" fullname="S. Loreto">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="P." surname="Saint-Andre" fullname="P. Saint-Andre">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="S." surname="Salsano" fullname="S. Salsano">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="G." surname="Wilkins" fullname="G. Wilkins">
            <organization showOnFrontPage="true"/>
          </author>
          <date year="2011" month="April"/>
          <abstract>
            <t>On today's Internet, the Hypertext Transfer Protocol (HTTP) is often used (some would say abused) to enable asynchronous, "server- initiated" communication from a server to a client as well as communication from a client to a server.  This document describes known issues and best practices related to such "bidirectional HTTP" applications, focusing on the two most common mechanisms: HTTP long polling and HTTP streaming.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC7230" target="https://www.rfc-editor.org/info/rfc7230" quoteTitle="true" derivedAnchor="RFC7230">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
          <seriesInfo name="RFC" value="7230"/>
          <seriesInfo name="DOI" value="10.17487/RFC7230"/>
          <author initials="R." surname="Fielding" fullname="R. Fielding" role="editor">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="J." surname="Reschke" fullname="J. Reschke" role="editor">
            <organization showOnFrontPage="true"/>
          </author>
          <date year="2014" month="June"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the "http" and "https" Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC7232" target="https://www.rfc-editor.org/info/rfc7232" quoteTitle="true" derivedAnchor="RFC7232">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</title>
          <seriesInfo name="RFC" value="7232"/>
          <seriesInfo name="DOI" value="10.17487/RFC7232"/>
          <author initials="R." surname="Fielding" fullname="R. Fielding" role="editor">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="J." surname="Reschke" fullname="J. Reschke" role="editor">
            <organization showOnFrontPage="true"/>
          </author>
          <date year="2014" month="June"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypertext information systems.  This document defines HTTP/1.1 conditional requests, including metadata header fields for indicating state changes, request header fields for making preconditions on such state, and rules for constructing the responses to a conditional request when one or more preconditions evaluate to false.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252" quoteTitle="true" derivedAnchor="RFC7252">
        <front>
          <title>The Constrained Application Protocol (CoAP)</title>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
          <author initials="Z." surname="Shelby" fullname="Z. Shelby">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="K." surname="Hartke" fullname="K. Hartke">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="C." surname="Bormann" fullname="C. Bormann">
            <organization showOnFrontPage="true"/>
          </author>
          <date year="2014" month="June"/>
          <abstract>
            <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
            <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC8639" target="https://www.rfc-editor.org/info/rfc8639" quoteTitle="true" derivedAnchor="RFC8639">
        <front>
          <title>Subscription to YANG Notifications</title>
          <seriesInfo name="RFC" value="8639"/>
          <seriesInfo name="DOI" value="10.17487/RFC8639"/>
          <author initials="E." surname="Voit" fullname="E. Voit">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A." surname="Clemm" fullname="A. Clemm">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A." surname="Gonzalez Prieto" fullname="A. Gonzalez Prieto">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="E." surname="Nilsen-Nygaard" fullname="E. Nilsen-Nygaard">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A." surname="Tripathy" fullname="A. Tripathy">
            <organization showOnFrontPage="true"/>
          </author>
          <date year="2019" month="September"/>
          <abstract>
            <t>This document defines a YANG data model and associated mechanisms enabling subscriber-specific subscriptions to a publisher's event streams.  Applying these elements allows a subscriber to request and receive a continuous, customized feed of publisher-generated information.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC8641" target="https://www.rfc-editor.org/info/rfc8641" quoteTitle="true" derivedAnchor="RFC8641">
        <front>
          <title>Subscription to YANG Notifications for Datastore Updates</title>
          <seriesInfo name="RFC" value="8641"/>
          <seriesInfo name="DOI" value="10.17487/RFC8641"/>
          <author initials="A." surname="Clemm" fullname="A. Clemm">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="E." surname="Voit" fullname="E. Voit">
            <organization showOnFrontPage="true"/>
          </author>
          <date year="2019" month="September"/>
          <abstract>
            <t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore.  Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC8650" target="https://www.rfc-editor.org/info/rfc8650" quoteTitle="true" derivedAnchor="RFC8650">
        <front>
          <title>Dynamic Subscription to YANG Events and Datastores over RESTCONF</title>
          <seriesInfo name="RFC" value="8650"/>
          <seriesInfo name="DOI" value="10.17487/RFC8650"/>
          <author initials="E." surname="Voit" fullname="E. Voit">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="R." surname="Rahman" fullname="R. Rahman">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="E." surname="Nilsen-Nygaard" fullname="E. Nilsen-Nygaard">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A." surname="Clemm" fullname="A. Clemm">
            <organization showOnFrontPage="true"/>
          </author>
          <author initials="A." surname="Bierman" fullname="A. Bierman">
            <organization showOnFrontPage="true"/>
          </author>
          <date year="2019" month="November"/>
          <abstract>
            <t>This document provides a RESTCONF binding to the dynamic subscription capability of both subscribed notifications and YANG-Push.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="sse" target="https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events" quoteTitle="true" derivedAnchor="sse">
        <front>
          <title>HTML Living Standard -- 9.2 Server-sent events</title>
          <author>
            <organization showOnFrontPage="true">WHATWG</organization>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
    </references>
    <section numbered="false" anchor="acknowledgements" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t pn="section-appendix.a-1">The need for a Series Transfer Pattern has been made clear by a number
of people that contribute to the IRTF Thing-to-Thing Research Group
(T2TRG), e.g. Matthias Kovatsch and Henk Birkholz (both of whom also
provided feedback on an early draft).  Henk also contributed further
examples for the use of Series Transfers in protocols.</t>
      <!--  LocalWords:  retransmission timestamp acknowledgement
 -->
<!--  LocalWords:  Acknowledgements
 -->

</section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="C." surname="Bormann" fullname="Carsten Bormann">
        <organization ascii="Universitaet Bremen TZI" showOnFrontPage="true">Universität Bremen TZI</organization>
        <address>
          <postal>
            <street>Postfach 330440</street>
            <city>Bremen</city>
            <code>D-28359</code>
            <country>Germany</country>
          </postal>
          <phone>+49-421-218-63921</phone>
          <email>cabo@tzi.org</email>
        </address>
      </author>
      <author initials="K." surname="Hartke" fullname="Klaus Hartke">
        <organization showOnFrontPage="true">Ericsson</organization>
        <address>
          <postal>
            <street>Torshamnsgatan 23</street>
            <city>Stockholm</city>
            <code>16483</code>
            <country>Sweden</country>
          </postal>
          <email>klaus.hartke@ericsson.com</email>
        </address>
      </author>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAM/3jF4AA+1ba3LcyJH+j1PUUn9IDtGiKM1YomZGpijqER5aDJGzcqzX
4agGqrtrCKBgFECqh0OHD7FH2JvsTfYk+2VmFYDuJmVNbDjCP9wRMyLQ9cjK
yvzy2WmaJq1tC3Oovk+UulgYdW4aa7y6aHTlZ6ZRZ7ptTVOp7fOLs50kd1ml
SwzPGz1r06lrSl1VaXvQNvPUt3W6/zjJdYsBB/sH++n+k3T/aZL4Vlf5n3Xh
KnzRNp1JEls3/KdvD/b3n+0fJJdmee2a/FC9q2g/06avaIsk0+2hstXMJUlt
D9UfW5ftKe+atjEzj7+WpfyRubLWWct/lKZq/Z+SRHftwjWHOFmK/xSW8Yfq
eKJeCtn8To5zrBvfmmrlG9fMD9WPlb0yjbft//x3q142Bkuri/94Fwdon1k7
GqXNxigPSg3OcOZ8O9PZQj1+vP/kyT5/l9l2eRgmyAuXg5pX6cHTx18/C2+6
qm0w6o0h0pb8sl4wK7968ix9cvAoPXj0NP3m8bODR/ylKbUtDlWmp+637c92
AjJ7Dshpf1fozqu3umkvzXDUk8Zm3rtqvMgljZwseORvTRgwAYtXjnbhGr/Q
ZeXnGjetDh6PDneOC7tcuKIcne/8JH30zZOnj1cPeH5tcrAhSR6oiq6hBU8P
ISm4+/5JqQ+vj39z8Hj/UC3atu6fD+Q5zVyVx5df42XmNA3ynucqFYT97cXp
D+oHe2WrOQiEcOomV//7t/9SzyYHpAG4zNRDiJS5IlHiqYMw9Rz7+Pbo4uMb
WVg3c2IFUeEPHz5ctGUx8bXJJtcL3V7P6RYell3R2lrPzUM/7JHKHhOa8WDz
vZzmycHT3xwq3TLj8fwN1OtQQaHmae2KIknSNFV6iguBDiTJKQRF6bouLNTH
usqrUl8a1Xmj3CyqOP6CqmplW1NCgezETPYUrk83jV7i22T4Vl0vTGNUZa7D
c4ZxU6N0nptcOZAMzpZmotRHHug7yLlsk2g8t45GlzrHlCsIlp4WRA2x/8PJ
+YWqGwcxcYWXmdqrY3d0Bibjpi7O9pJ2AKYFvozL1TV2txUeNclil7VdwyeE
dtDk0uGxMd51TUaUVDkGxr0UxAqPWWHporGGm7baVmq0F03AF4XRAECoU9cm
PQsmSfLvurEOijRQv9BXBqRB+32QKvszSGwhAnIDsnAKbSHSicFJz5A9dW3b
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
18oD/w+eDRha+jkAAA==

-->

</rfc>
