<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpapi-link-hint-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title>HTTP Link Hints</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-link-hint-03"/>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization/>
      <address>
        <email>mnot@mnot.net</email>
        <uri>https://www.mnot.net/</uri>
      </address>
    </author>
    <date/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 40?>

<t>This memo specifies "HTTP Link Hints", a mechanism for annotating Web links to HTTP(S) resources with information that otherwise might be discovered by interacting with them.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-httpapi.github.io/link-hint/draft-ietf-httpapi-link-hint.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-httpapi-link-hint/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Building Blocks for HTTP APIs Working Group mailing list (<eref target="mailto:httpapi@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/httpapi/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/httpapi/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-httpapi/link-lint"/>.</t>
    </note>
  </front>
  <middle>
    <?line 45?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>HTTP <xref target="HTTP"/> clients can discover a variety of information about a resource by interacting with it. For example, the methods supported by a resource can be learned by examining the Allow header field in responses from it, and the need for authentication is conveyed with a 401 (Authentication Required) status code.</t>
      <t>Often, it can be beneficial to know this information before interacting with the resource; not only can such knowledge save time (through reduced round trips), but it can also influence the choices made by the code or user driving the interaction. For example, a user interface that presents the data from an HTTP-based API might need to know which resources the user has write access to, so that it can present the appropriate interface.</t>
      <t>This specification defines a vocabulary of HTTP link hints that allow such metadata about HTTP resources to be attached to Web links <xref target="WEB-LINKING"/>, thereby making it available before the link is followed. It also establishes a registry for future hints.</t>
      <t>Hints are just that -- they are not a contract, and are to only be taken as advisory. The runtime behaviour of the resource always overrides hinted information. For example, a client might receive a hint that the PUT method is allowed on all "widget" resources. This means that generally, the client can send a PUT to them, but a specific resource might reject a PUT based upon access control or other considerations.</t>
      <t>More fine-grained information might also be gathered by interacting with the resource (e.g., via a GET), or by another resource containing it (such as a widgets collection) or describing it (e.g., one linked to it with a "describedby" link relation).</t>
      <t>There is not a single way to convey hints with a link; rather, it is expected that this will be done by individual link serialisations (see <xref section="3.4.1" sectionFormat="of" target="WEB-LINKING"/>).</t>
      <section anchor="notational-conventions">
        <name>Notational Conventions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="link_hints">
      <name>HTTP Link Hints</name>
      <t>A HTTP link hint is a (key, value) tuple that describes the target resource of a Web link <xref target="WEB-LINKING"/>, or describes the link itself. The value's canonical form is expressed in subset of the data types defined by HTTP Structured Fields <xref target="STRUCTURED-FIELDS"/>.</t>
      <t>Typically, link hints are serialised in links as target attributes (<xref section="3.4.1" sectionFormat="of" target="WEB-LINKING"/>). In the Link HTTP Header, this can be done by serialising those attributes as strings. In other link formats, this requires a mapping from the canonical data model into the constraints of that format.</t>
      <t>The information in a link hint SHOULD NOT be considered valid for longer than the freshness lifetime (<xref section="4.2" sectionFormat="of" target="HTTP-CACHING"/>) of the representation that the link occurred within, and in some cases, it might be valid for a considerably shorter period.</t>
      <t>Likewise, the information in a link hint is specific to the link it is attached to. This means that if a representation is specific to a particular user, the hints on links in that representation are also specific to that user.</t>
    </section>
    <section anchor="hints">
      <name>Pre-Defined HTTP Link Hints</name>
      <section anchor="allow">
        <name>allow</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: allow</t>
          </li>
          <li>
            <t>Description: Hints the HTTP methods that can be used to interact with the target resource; equivalent to the Allow HTTP response header.</t>
          </li>
          <li>
            <t>Content Model: Inner List of Strings</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be a Inner List of Strings, containing HTTP methods (<xref section="9" sectionFormat="of" target="HTTP"/>).</t>
      </section>
      <section anchor="formats">
        <name>formats</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: formats</t>
          </li>
          <li>
            <t>Description: Hints the representation type(s) that the target resource can produce and consume, using the GET and PUT (if allowed) methods respectively.</t>
          </li>
          <li>
            <t>Content Model: Inner List of Strings</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be a Inner List of Strings, containing media types (<xref section="8.3.1" sectionFormat="of" target="HTTP"/>).</t>
      </section>
      <section anchor="accept-post">
        <name>accept-post</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: accept-post</t>
          </li>
          <li>
            <t>Description: Hints the POST request format(s) that the target resource can consume.</t>
          </li>
          <li>
            <t>Content Model: Inner List of Strings</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be a Inner List of Strings, with the same constraints as for "formats".</t>
        <t>When this hint is present, "POST" SHOULD be listed in the "allow" hint when present.</t>
      </section>
      <section anchor="accept-patch">
        <name>accept-patch</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: accept-patch</t>
          </li>
          <li>
            <t>Description: Hints the PATCH <xref target="RFC5789"/> request format(s) that the target resource can consume; equivalent to the Accept-Patch HTTP response header.</t>
          </li>
          <li>
            <t>Content Model: Inner List of Strings</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be a Inner List of Strings, containing media types (<xref section="8.3.1" sectionFormat="of" target="HTTP"/>) that identify the acceptable patch formats.</t>
        <t>When this hint is present, "PATCH" SHOULD be listed in the "allow" hint when present.</t>
      </section>
      <section anchor="accept-ranges">
        <name>accept-ranges</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: accept-ranges</t>
          </li>
          <li>
            <t>Description: Hints the range-specifier(s) available for the target resource; equivalent to the Accept-Ranges HTTP response header <xref target="HTTP"/>.</t>
          </li>
          <li>
            <t>Content Model: Inner List of Strings</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be a Inner List of Strings, containing HTTP ranges-specifiers (<xref section="14.1.1" sectionFormat="of" target="HTTP"/>).</t>
      </section>
      <section anchor="accept-prefer">
        <name>accept-prefer</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: accept-prefer</t>
          </li>
          <li>
            <t>Description: Hints the preference(s) <xref target="RFC7240"/> that the target resource understands (and might act upon) in requests.</t>
          </li>
          <li>
            <t>Content Model: Inner List of Strings</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be a Inner List of Strings, containing preferences (<xref section="2" sectionFormat="of" target="RFC7240"/>). Note that, by its nature, a preference can be ignored by the server.</t>
      </section>
      <section anchor="precondition-req">
        <name>precondition-req</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: precondition-req</t>
          </li>
          <li>
            <t>Description: Hints that the target resource requires state-changing requests (e.g., PUT, PATCH) to include a precondition, as per <xref section="13.1" sectionFormat="of" target="HTTP"/>, to avoid conflicts due to concurrent updates.</t>
          </li>
          <li>
            <t>Content Model: Inner List of Strings</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be a Inner List of Strings, with possible values "etag" and "last-modified" indicating type of precondition expected.</t>
        <t>See also the 428 Precondition Required status code (<xref target="RFC6585"/>).</t>
      </section>
      <section anchor="auth-schemes">
        <name>auth-schemes</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: auth-schemes</t>
          </li>
          <li>
            <t>Description: Hints that the target resource requires authentication using the HTTP Authentication framework <xref section="11" sectionFormat="of" target="HTTP"/>.</t>
          </li>
          <li>
            <t>Content Model: Inner List of Strings</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be a Inner List of Strings, each corresponding to a HTTP authentication scheme (<xref section="11.1" sectionFormat="of" target="HTTP"/>), and optionally a "realms" member containing an array of zero to many strings that identify protection spaces that the resource is a member of.</t>
      </section>
      <section anchor="auth-realms">
        <name>auth-realms</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: auth-realms</t>
          </li>
          <li>
            <t>Description: Hints the authentication realm(s) available for those schemes that support them in the HTTP Authentication framework <xref section="11" sectionFormat="of" target="HTTP"/>.</t>
          </li>
          <li>
            <t>Content Model: array (of strings)</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be an array of strings, each indicating a protection space that the resource is a member of.</t>
      </section>
      <section anchor="status">
        <name>status</name>
        <ul spacing="normal">
          <li>
            <t>Hint Name: status</t>
          </li>
          <li>
            <t>Description: Hints the status of the target resource.</t>
          </li>
          <li>
            <t>Content Model: Token</t>
          </li>
          <li>
            <t>Specification: [this document]</t>
          </li>
        </ul>
        <t>Content MUST be a Token; possible values are:</t>
        <ul spacing="normal">
          <li>
            <t>deprecated - indicates that use of the resource is not recommended, but it is still available.</t>
          </li>
          <li>
            <t>gone - indicates that the resource is no longer available; i.e., it will return a 410 (Gone) HTTP status code if accessed.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Clients need to exercise care when using hints. For example, a naive client might send credentials to a server that uses the auth-req hint, without checking to see if those credentials are appropriate for that server.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="hint_registry">
        <name>HTTP Link Hint Registry</name>
        <t>This specification defines the HTTP Link Hint Registry. See <xref target="link_hints"/> for a general description of the function of link hints.</t>
        <t>Link hints are generic; that is, they are potentially applicable to any HTTP resource, not specific to one application of HTTP, nor to one particular format. Generally, they ought to be information that would otherwise be discoverable by interacting with the resource.</t>
        <t>Hint names MUST be composed of the lowercase letters (a-z), digits (0-9), underscores ("_") and hyphens ("-"), and MUST begin with a lowercase letter.</t>
        <t>Hint content MUST be described using valid combinations of the following types defined by HTTP Structured Fields (<xref target="STRUCTURED-FIELDS"/>):</t>
        <ul spacing="normal">
          <li>
            <t>Inner List (<xref section="3.1.2" sectionFormat="of" target="STRUCTURED-FIELDS"/>)</t>
          </li>
          <li>
            <t>Item (<xref section="3.3" sectionFormat="of" target="STRUCTURED-FIELDS"/>)</t>
          </li>
        </ul>
        <t>Hint semantics SHOULD be described in terms of the framework defined in <xref target="WEB-LINKING"/>.</t>
        <t>New hints are registered using the Expert Review process described in <xref target="RFC8126"/> to enforce the criteria above. Requests for registration of new resource hints are to use the following template:</t>
        <ul spacing="normal">
          <li>
            <t>Hint Name: [hint name]</t>
          </li>
          <li>
            <t>Description: [a short description of the hint's semantics]</t>
          </li>
          <li>
            <t>Content Model: [allowed Structured Fields types]</t>
          </li>
          <li>
            <t>Specification: [reference to specification document]</t>
          </li>
        </ul>
        <t>Initial registrations are enumerated in <xref target="hints"/>. The "rel", "rev", "hreflang", "media", "title", and "type" hint names are reserved, so as to avoid potential clashes with link serialisations.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="HTTP-CACHING">
          <front>
            <title>HTTP Caching</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="WEB-LINKING">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <reference anchor="JSON">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="URI">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="September" year="2024"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields.</t>
              <t>This document obsoletes RFC 8941.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9651"/>
          <seriesInfo name="DOI" value="10.17487/RFC9651"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5789">
          <front>
            <title>PATCH Method for HTTP</title>
            <author fullname="L. Dusseault" initials="L." surname="Dusseault"/>
            <author fullname="J. Snell" initials="J." surname="Snell"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>Several applications extending the Hypertext Transfer Protocol (HTTP) require a feature to do partial resource modification. The existing HTTP PUT method only allows a complete replacement of a document. This proposal adds a new HTTP method, PATCH, to modify an existing HTTP resource. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5789"/>
          <seriesInfo name="DOI" value="10.17487/RFC5789"/>
        </reference>
        <reference anchor="RFC7240">
          <front>
            <title>Prefer Header for HTTP</title>
            <author fullname="J. Snell" initials="J." surname="Snell"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This specification defines an HTTP header field that can be used by a client to request that certain behaviors be employed by a server while processing a request.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7240"/>
          <seriesInfo name="DOI" value="10.17487/RFC7240"/>
        </reference>
        <reference anchor="RFC6585">
          <front>
            <title>Additional HTTP Status Codes</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6585"/>
          <seriesInfo name="DOI" value="10.17487/RFC6585"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
    </references>
    <?line 214?>

<section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Jan Algermissen, Mike Amundsen, Bill Burke, Graham Klyne, Leif Hedstrom, Jeni Tennison, Erik Wilde and Jorge Williams for their suggestions and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
u7rCYSklps7ES0prKEpspKa3t+QiyxmtR1zViU6kx2jEfmkfawBz2DtiEfZT
4+Agtr5s2sgWWWSvDpLwNSddfW8/IeuJ7hRX9jlDZVV3NdI0HsqJ5Vk927Do
ntVsmNP4XIuUWsBqaC7OHJiRG5gZwwLJSk4WW4XcpaQcnYFgqKF/P7enlBUC
JUvsGFHrVrShSMaAEBrWPnXE2XQCkTGtx2QMIaclkXmux8qnYy2ij4b7MX2I
pxQA2gbDkKZ0EvzGwKo0rY0JGakODkVWVBUEARJcprjmGNCKKNswMoL/wbOQ
XBsxg16qDCCc6RtFR4h+SOnuhaOTHoWAF22f3a3NZzaDqB5z7rGyv7XppJjh
cK9TSrI4sfPyeBOuos3qgMvaXGTiHPdWBURHmokoBBxyadTgRfCtTT6JVALW
5iwhSX7kNnHBJ1r/7kfxgn1/xofYMJbE5PniCYYXDm5Q2xDmQgRuw+8a7zwT
ZONQG+epVedIE9NHPseEA84QoiCiOOp8ThZP1RMkKtiTZU658m6FblfdlPZQ
/PbrCst/TJJmHoo+lJnePVW/G/1X9tux8KfRvn0MBJjBkdfgjG/vBXTdGcCM
W3a7dYp11vZZPp1hFbsG2Tw22IcC4mkFmQ03UfK1RRbpk8HtZh+EMe1jrvLl
9wa4UJmOAaGD78HwoefkFYwpf5y5wayybt1sOy33Yn35FnIRxeKsEDTzRawD
vt8FpsaFrCxWGV76Kl0vmFcP8HxAvuGDSCSxYFjIg2jjvUjzVFvASj5C0uw9
NpCeH0dpSxy5Crp06fQe1LnpftiPro9fh1zp8U8HlDh9mxLupA4vwiWJ8H/J
IF9p4CF+UGVXj305wqPLJ2BGOJLJl5RNcP+32jYS8X6dzFbb7qc0ah/E+qAh
7bZneTLbr40Kfrl3vNydum2Kd99byV44FrTd+Iq+95Bj/g2jGTVW5h7v8m33
wu3bqbBFSHs3+2n/0S7c7F6nqkugx9cOEJJiRThSI27TQX3bVxTZR+33xrbd
3wqgnGE2W93mAr0/9/T5dAt0SkmnCSqhtHPEfEVPyioUDZhhlZlzAgWdoDOW
zzQtMwAKa2rZaL5HM/dA36T4VE1VA6qST2ibEe5YPUD07nvq3PZ5VZrXmfJ7
adbnM+SMHaExtBVe6XPKOa80ZwrjXKdYIatVqCVwrl2S0ukm6/uomqMcArfV
xA98qLSip5yc9PzRPZfWDXDcIafKely3SP1dArEqzdWFpCl9QJlXKqTLpIhH
+weUGrcdY2G7W9cmCyMHevL44HHrpLWbDiyS/mKTErtN32gIa2X5NpHzl3Cr
rWODdReVuemqvKPw76JChRMR4DOenvkukU86vIG17XmwVqhxlRhDDWXm60k5
3Y30jJJ5YXt08zTy9cLIDlTdN0ZyufovZSpauJDlMp631+IqUmcXlrUz6evr
QT+NYrimElaqxh0T8FLcZQGh5V6OXsOAu98VF6lsEKzJCxYuibjqGiP4/8gs
PGxb6BKg2v4mm+jgb1fsoeOncgP3r4Tde+Ya4uHlvWAHdw7VhjW3uwOI6+pG
ld/mDzz02QZ74Zh+SEJndLijzwIyMYh4RM3iwLxxOxCKvkRSdG2fqay5xqIq
gqMKbmMytJMJFZ82pt6cM9ZvmsHPhB6qYd9XpTGrUQiVVAZ5tLcrtl5h2m1v
Z11upLMkV/CZXKnUAFOrjXZLgrRTwQdU4TI1Xm2pP5VJ6f42pRIGp52e5/yl
zPqVRynpjmPl4oNvIVLQNVk9SN0zjI/bDaKtt1Fk5sl9gKHrKfhVehO4iYrb
ehw8rjsrV1g6N2feL8kTY4ZA18hHF0cbW36wXr1FgAmXUL7q8ileSt3+7SVc
4+KbEw3FFRflOzXh21D7Ctc3oWbLPhHNa1yXaXxuy6VcEVupnfIUOn0WKNPG
6jWaZpXzAOVczUYawaRFKiiXq/d+fTbhbn2KbDQMimLQCOpoYnunJhaqluLV
yoUUCKYmM4iF+rUPBBZVnWedzwQ6Hwj4K8Qv3A2Fa0H+rMM2Dk6f0VRU2ApI
Uh3FUBFS5Mo5zvDl4C9ErExPKOHc2h08xZPPrhEPKWPtfeptc0SbLmcwe3oz
6IUgF9ZB/tfc5aytEOVK16invZrwbuTLoJB3pMtwgRO1zzelMVv6mqr71p1l
921mtE4CsFJB3/MV37vG0SiH6LXS/+G9vf1+rUIQh0XYzjl25ToG2BTtHpvo
F3eHHms3GkDyQi065u69kevcbcp1guTRkMPNNTqDBvjCcmXlz5//yZc++0/o
hAVqI1uMXxXQ/bzRfCE+V0NOMTmpJycN7t84QYkVGppu5cKUFBvWdKdAjfSx
2Vos/O3XaTTbj+sR8bdfpa+C30UKNOwH2+L8cTMuYny4Rt60Ebalj3cFzfak
5ap1hmtD6WmpiU5WMPHbVyX6GOki2IHm/JUTEsGcLvaMmtO/KRbLcX6i31xn
oR/8bV+89iM5Q63Du7bXPJN5xp9PSNsekRqaQ+iR/CUBu+Ud16Px06KRTG84
JBylzScq/MEdUbwMXzm9QZJ0lCP+FhqxE4e2c32jxFEBnuDH5xSBn9fmBuT5
ysipLMQv+bLE05lCkHqtMkBUFX3xRpVaXKuy1JbOfidG34gPOs98KfhNhUyH
nnMtCxsrLdogiZxMYIUeYnQcIyiT4LSJ/wDtFNlsDikAAA==

-->

</rfc>
