<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version  -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc strict="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="3"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc subcompact="no"?>
<?rfc iprnotified="no"?>

<rfc ipr="trust200902" docName="draft-ietf-core-resource-directory-16" category="std">

  <front>
    <title>CoRE Resource Directory</title>

    <author initials="Z." surname="Shelby" fullname="Zach Shelby">
      <organization>ARM</organization>
      <address>
        <postal>
          <street>150 Rose Orchard</street>
          <city>San Jose</city>
          <code>95134</code>
          <country>USA</country>
        </postal>
        <phone>+1-408-203-9434</phone>
        <email>zach.shelby@arm.com</email>
      </address>
    </author>
    <author initials="M." surname="Koster" fullname="Michael Koster">
      <organization>SmartThings</organization>
      <address>
        <postal>
          <street>665 Clyde Avenue</street>
          <city>Mountain View</city>
          <code>94043</code>
          <country>USA</country>
        </postal>
        <phone>+1-707-502-5136</phone>
        <email>Michael.Koster@smartthings.com</email>
      </address>
    </author>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universitaet 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="P." surname="van der Stok" fullname="Peter van der Stok">
      <organization abbrev="consultant">consultant</organization>
      <address>
        <phone>+31-492474673 (Netherlands), +33-966015248 (France)</phone>
        <email>consultancy@vanderstok.org</email>
        <uri>www.vanderstok.org</uri>
      </address>
    </author>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss" role="editor">
      <organization></organization>
      <address>
        <postal>
          <street>Hollandstr. 12/4</street>
          <code>1020</code>
          <country>Austria</country>
        </postal>
        <phone>+43-664-9790639</phone>
        <email>christian@amsuess.com</email>
      </address>
    </author>

    <date year="2018" month="October" day="23"/>

    <area>Internet</area>
    <workgroup>CoRE</workgroup>
    <keyword>CoRE, Web Linking, Resource Discovery, Resource Directory</keyword>

    <abstract>


<t>In many M2M applications, direct discovery of resources is not practical
due to sleeping nodes, disperse networks, or networks where multicast traffic
is inefficient. These problems can be solved by employing an entity called
a Resource Directory (RD), which hosts registrations of resources held on
other servers, allowing lookups to be performed for those resources. This
document specifies the web interfaces that a Resource Directory supports for web servers to discover the RD and to register, maintain, lookup
and remove resource descriptions. Furthermore, new link attributes useful
in conjunction with an RD are defined.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>The work on Constrained RESTful Environments (CoRE) aims at realizing the
REST architecture in a suitable form for the most constrained nodes (e.g.,
8-bit microcontrollers with limited RAM and ROM) and networks (e.g. 6LoWPAN).
CoRE is aimed at machine-to-machine (M2M) applications such as smart energy
and building automation.</t>

<t>The discovery of resources offered by a constrained server is very important
in machine-to-machine applications where there are no humans in the loop and
static interfaces result in fragility. The discovery of resources provided by
an HTTP Web Server is typically called Web Linking <xref target="RFC5988"/>. The use of
Web Linking for the description and discovery of resources hosted by
constrained web servers is specified by the CoRE Link Format
<xref target="RFC6690"/>. However, <xref target="RFC6690"/> only describes how to discover
resources from the web server that hosts them by querying
<spanx style="verb">/.well-known/core</spanx>. In many M2M scenarios, direct discovery of resources is
not practical due to sleeping nodes, disperse networks, or networks where
multicast traffic is inefficient. These problems can be solved by employing
an entity called a Resource Directory (RD), which hosts registrations of
resources held on other servers, allowing lookups to be performed for those
resources.</t>

<t>This document specifies the web interfaces that a Resource Directory supports for web servers to discover the RD and to register, maintain, lookup
and remove resource descriptions. Furthermore, new link attributes useful in
conjunction with a Resource Directory are defined. Although the examples in
this document show the use of these interfaces with CoAP <xref target="RFC7252"/>, they
can be applied in an equivalent manner to HTTP <xref target="RFC7230"/>.</t>

</section>
<section anchor="terminology" title="Terminology">

<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 <xref target="RFC2119"/>. The
term “byte” is used in its now customary sense as a synonym for “octet”.</t>

<t>This specification requires readers to be familiar with all the terms and
concepts that are discussed in <xref target="RFC3986"/>, <xref target="RFC5988"/> and <xref target="RFC6690"/>. Readers should
also be familiar with the terms and concepts discussed in <xref target="RFC7252"/>.  To
describe the REST interfaces defined in this specification, the URI Template
format is used <xref target="RFC6570"/>.</t>

<t>This specification makes use of the following additional terminology:</t>

<t><list style="hanging">
  <t hangText='resolve against'><vspace blankLines='0'/>
  The expression “a URI-reference is <spanx style="emph">resolved against</spanx> a base URI” is used
to describe the process of <xref target="RFC3986"/> Section 5.2. Noteworthy corner cases are
that if the URI-reference is a (full) URI and resolved  against any base URI, that gives the original full URI, and
that resolving an empty URI reference gives the base URI without any fragment identifier.</t>
  <t hangText='Resource Directory'><vspace blankLines='0'/>
  A web entity that stores information about web resources and implements the
REST interfaces defined in this specification for registration and lookup
of those resources.</t>
  <t hangText='Sector'><vspace blankLines='0'/>
  In the context of a Resource Directory, a sector is a
logical grouping of endpoints.</t>
  <t>The abbreviation “d=” is used for the sector in query parameters for
compatibility with deployed implementations.</t>
  <t hangText='Group'><vspace blankLines='0'/>
  A group in the Resource Directory specifies a set of endpoints that are enabled with the same multicast address for the purpose of efficient group communications. All groups within a sector have unique names.</t>
  <t hangText='Endpoint'><vspace blankLines='0'/>
  Endpoint (EP) is a term used to describe a web server or client in <xref target="RFC7252"/>.
In the context of this specification an endpoint is used to describe a
web server that registers resources to the Resource Directory. An endpoint
is identified by its endpoint name, which is included during registration,
and has a unique name within the associated sector of the registration.</t>
  <t hangText='Registration Base URI'><vspace blankLines='0'/>
  The Base URI of a Registration is a URI that typically gives scheme and
authority information about an Endpoint. The Registration Base URI is provided at registration time, and is used by the Resource Directory to
resolve relative references of the registration into URIs.</t>
  <t hangText='Target'><vspace blankLines='0'/>
  The target of a link is the destination address (URI) of the link. It is sometimes identified with “href=”, or displayed as <spanx style="verb">&lt;target&gt;</spanx>. Relative targets need resolving with respect to the Base URI (section 5.2 of <xref target="RFC3986"/>).</t>
  <t>This use of the term Target is consistent with <xref target="RFC8288"/>’s use of the term.</t>
  <t hangText='Context'><vspace blankLines='0'/>
  The context of a link is the source address (URI) of the link,
and describes which resource is linked to the target.
A link’s context is made explicit in serialized links as the “anchor=” attribute.</t>
  <t>This use of the term Context is consistent with <xref target="RFC8288"/>’s use of the term.</t>
  <t hangText='Directory Resource'><vspace blankLines='0'/>
  A resource in the Resource Directory (RD) containing registration resources.</t>
  <t hangText='Group Resource'><vspace blankLines='0'/>
  A resource in the RD containing registration resources of the Endpoints that form a group.</t>
  <t hangText='Registration Resource'><vspace blankLines='0'/>
  A resource in the RD that contains information about an Endpoint and its links.</t>
  <t hangText='Commissioning Tool'><vspace blankLines='0'/>
  Commissioning Tool (CT) is a device that assists during the installation of the
network by assigning values to parameters, naming endpoints and groups, or adapting
the installation to the needs of the applications.</t>
  <t hangText='Registrant-ep'><vspace blankLines='0'/>
  Registrant-ep is the endpoint that is registered into the RD. The registrant-ep can register itself, or a CT registers the registrant-ep.</t>
  <t hangText='RDAO'><vspace blankLines='0'/>
  Resource Directory Address Option.</t>
</list></t>

<t>For several operations, interface descriptions are given in list form;
those describe the operation participants, request codes, URIs, content formats and outcomes.
Those templates contain normative content in their
Interaction, Method, URI Template and URI Template Variables sections
as well as the details of the Success condition.
The additional sections
on options like Content-Format and on Failure codes
give typical cases that an implementation of the RD should deal with.
Those serve to illustrate the typical responses
to readers who are not yet familiar with all the details of CoAP based interfaces;
they do not limit what a server may respond under atypical circumstances.</t>

</section>
<section anchor="arch" title="Architecture and Use Cases">

<section anchor="principles" title="Principles">

<t>The Resource Directory is primarily a tool to make discovery operations more
efficient than querying /.well-known/core on all connected devices, or across
boundaries that would be limiting those operations.</t>

<t>It provides a cache (in the high-level sense, not as defined in
<xref target="RFC7252"/>/<xref target="RFC2616"/>) of data that could otherwise only be obtained by
directly querying the /.well-known/core resource on the target device, or by
accessing those resources with a multicast request.</t>

<t>Only information SHOULD be stored in the resource
directory that is discoverable from querying the described device’s
/.well-known/core resource directly.</t>

<t>Data in the resource directory can only be provided by the
device which hosts those data or a dedicated Commissioning Tool (CT).
These CTs are thought to act on behalf of endpoints too constrained, or generally
unable, to present that information themselves. No other client can modify data
in the resource directory. Changes in the Resource Directory do not propagate automatically back to the web server from where the links originated.</t>

</section>
<section anchor="architecture" title="Architecture">

<t>The resource directory architecture is illustrated in <xref target="fig-arch"/>. A
Resource Directory (RD) is used as a repository for Web Links <xref target="RFC5988"/>
describing resources hosted on other web servers, also called endpoints
(EP).
An endpoint is a web server associated with a scheme, IP address and port. A physical node may host one or more endpoints. The
RD implements a set of REST interfaces for endpoints to register and maintain
sets of Web Links (called resource directory registration entries), and for endpoints to
lookup resources from the RD or maintain groups. An RD can be logically segmented by the use of Sectors.
The set of endpoints grouped for group communication can be defined by the RD or configured
by a Commissioning Tool. This information hierarchy is shown in <xref target="fig-hierarchy"/>.</t>

<t>A mechanism to discover an RD using CoRE Link Format <xref target="RFC6690"/> is defined.</t>

<t>Registration entries
in the RD are soft state and need to be periodically refreshed.</t>

<t>An endpoint uses specific interfaces to register, update and remove a resource
directory registration entry. It is also possible for an RD to fetch Web Links
from endpoints and add them as resource directory registration entries.</t>

<t>At the first registration of a set of entries, a “registration resource” is created,
the location of which is returned to the registering endpoint. The registering
endpoint uses this registration resource to manage the contents of registration entries.</t>

<t>A lookup interface for discovering any of the Web Links held in the RD is
provided using the CoRE Link Format.</t>

<figure title="The resource directory architecture." align="left" anchor="fig-arch"><artwork><![CDATA[
             Registration     Lookup, Group
              Interface        Interfaces
  +----+          |                 |
  | EP |----      |                 |
  +----+    ----  |                 |
                --|-    +------+    |
  +----+          | ----|      |    |     +--------+
  | EP | ---------|-----|  RD  |----|-----| Client |
  +----+          | ----|      |    |     +--------+
                --|-    +------+    |
  +----+    ----  |                 |
  | EP |----      |                 |
  +----+

]]></artwork></figure>

<figure title="The resource directory information hierarchy." align="left" anchor="fig-hierarchy"><artwork><![CDATA[
               +------------+
               |   Group    | <-- Name, Scheme, IP, Port
               +------------+
                     |
                     |
               +------------+
               |  Endpoint  |  <-- Name, Scheme, IP, Port
               +------------+
                     |
                     |
               +------------+
               |  Resource  |  <-- Target, Parameters
               +------------+

]]></artwork></figure>

<t>A Registrant-EP MAY keep concurrent registrations to more than one RD at the same time
if explicitly configured to do so,
but that is not expected to be supported by typical EP implementations.
Any such registrations are independent of each other.
The usual expectation when multiple discovery mechanisms or addresses are configured
is that they constitute a fallback path for a single registration.</t>

</section>
<section anchor="ER-model" title="RD Content Model">

<t>The Entity-Relationship (ER) models shown in <xref target="fig-ER-WKC"/> and <xref target="fig-ER-RD"/> model the contents of /.well-known/core and the resource directory respectively, with entity-relationship diagrams <xref target="ER"></xref>. Entities (rectangles) are used for concepts that exist independently. Attributes (ovals) are used for concepts that exist only in connection with a related entity. Relations (diamonds) give a semantic meaning to the relation between entities. Numbers specify the cardinality of the relations.</t>

<t>Some of the attribute values are URIs. Those values are always full URIs and never relative references in the information model.
They can, however, be expressed as relative references in serializations, and often are.</t>

<t>These models provide an abstract view of the information expressed in link-format documents and a Resource Directory. They cover the concepts, but not necessarily all details of an RD’s operation; they are meant to give an overview, and not be a template for implementations.</t>

<figure title="E-R Model of the content of /.well-known/core" align="left" anchor="fig-ER-WKC"><artwork><![CDATA[
                    +----------------------+
                    |   /.well-known/core  |
                    +----------------------+
                               |
                               | 1
                       ////////\\\\\\\
                      <    contains   >
                       \\\\\\\\///////
                               |
                               | 0+
                     +--------------------+
                     |      link          |
                     +--------------------+
                               |
                               |  1   oooooooo
                               +-----o target o
                               |      oooooooo
          oooooooooooo   0+    |
         o    target  o--------+
         o  attribute o        | 0+   oooooo
          oooooooooooo         +-----o rel  o
                               |      oooooo
                               |
                               | 1    ooooooooo
                               +-----o context o
                                      ooooooooo



]]></artwork></figure>

<t>The model shown in <xref target="fig-ER-WKC"/> models the contents of /.well-known/core which contains:</t>

<t><list style="symbols">
  <t>a set of links belonging to the hosting web server</t>
</list></t>

<t>The web server is free to choose links it deems appropriate to be exposed in its <spanx style="verb">.well-known/core</spanx>.
Typically, the links describe resources that are served by the host, but the set can also contain links to resources on other servers (see examples in <xref target="RFC6690"/> page 14).
The set does not necessarily contain links to all resources served by the host.</t>

<t>A link has the following attributes (see <xref target="RFC5988"/>):</t>

<t><list style="symbols">
  <t>Zero or more link relations: They describe relations between the link context and the link target.  <vspace blankLines='1'/>
In link-format serialization, they are expressed as space-separated values in the “rel” attribute, and default to “hosts”.</t>
  <t>A link context URI: It defines the source of the relation, e.g. <spanx style="emph">who</spanx> “hosts” something.  <vspace blankLines='1'/>
In link-format serialization, it is expressed in the “anchor” attribute. It defaults to that document’s URI.</t>
  <t>A link target URI: It defines the destination of the relation (e.g. <spanx style="emph">what</spanx> is hosted), and is the topic of all target attributes.  <vspace blankLines='1'/>
In link-format serialization, it is expressed between angular brackets, and sometimes called the “href”.</t>
  <t>Other target attributes (e.g. resource type (rt), interface (if), or content-type (ct)).
These provide additional information about the target URI.</t>
</list></t>

<figure title="E-R Model of the content of the Resource Directory" align="left" anchor="fig-ER-RD"><artwork><![CDATA[
             +----------------------+              1  ooooooo
             |  resource-directory  |             +--o  href o
             +----------------------+             |   ooooooo
                        | 1                       |
                        |         oooooooooo  0-1 |      1  oooooo
                        |        o    base  o---+ | +------o  gp  o
                        |         ooooooooooo   | | |       oooooo
                        |                       | | |
                   //////\\\\             0+  +--------+  0-1  ooooo
                  < contains >----------------| group  |------o  d  o
                   \\\\\/////                 +--------+       ooooo
                        |                         | 0+
                     0+ |                         |
 ooooooo     1  +---------------+  1+      ///////\\\\\\
o  base o-------|  registration |---------< composed of >
 ooooooo        +---------------+          \\\\\\\//////
                    |       | 1
                    |       +--------------+
       oooooooo   1 |                      |
      o  href  o----+                 /////\\\\
       oooooooo     |                < contains >
                    |                 \\\\\/////
       oooooooo   1 |                      |
      o   ep   o----+                      | 0+
       oooooooo     |             +------------------+
                    |             |      link        |
       oooooooo 0-1 |             +------------------+
      o    d   o----+                      |
       oooooooo     |                      |  1   oooooooo
                    |                      +-----o target o
       oooooooo   1 |                      |      oooooooo
      o   lt   o----+     ooooooooooo   0+ |
       oooooooo     |    o  target   o-----+
                    |    o attribute o     | 0+   oooooo
    ooooooooooo 0+  |     ooooooooooo      +-----o rel  o
   o  endpoint o----+                      |      oooooo
   o attribute o                           |
    ooooooooooo                            | 1   ooooooooo
                                           +----o context o
                                                 ooooooooo
]]></artwork></figure>

<t>The model shown in <xref target="fig-ER-RD"/> models the contents of the resource directory which contains in addition to /.well-known/core:</t>

<t><list style="symbols">
  <t>0 to n Registration (entries) of endpoints,</t>
  <t>0 or more Groups</t>
</list></t>

<t>A Group has:</t>

<t><list style="symbols">
  <t>a group name (“gp”),</t>
  <t>optionally a sector (abbreviated “d” for historical reasons),</t>
  <t>a group resource location inside the RD (“href”),</t>
  <t>zero or one multicast addresses expressed as a base URI (“base”),</t>
  <t>and is composed of zero or more  registrations (endpoints).</t>
</list></t>

<t>A registration is associated with one endpoint. A registration can be part of 0 or more Groups . A registration defines a set of links as defined for /.well-known/core. A Registration has six types of attributes:</t>

<t><list style="symbols">
  <t>a unique endpoint name (“ep”) within a sector</t>
  <t>a Registration Base URI (“base”, a URI typically describing the scheme://authority part)</t>
  <t>a lifetime (“lt”),</t>
  <t>a registration resource location inside the RD (“href”),</t>
  <t>optionally a sector (“d”)</t>
  <t>optional additional endpoint attributes (from <xref target="iana-registry"/>)</t>
</list></t>

<t>The cardinality of “base” is currently 1;
future documents are invited to extend the RD specification to support multiple values (e.g. <xref target="I-D.silverajan-core-coap-protocol-negotiation"/>).
Its value is used as a Base URI when resolving URIs in the links contained in the endpoint.</t>

<t>Links are modelled as they are in <xref target="fig-ER-WKC"/>.</t>

</section>
<section anchor="cellular" title="Use Case: Cellular M2M">

<t>Over the last few years, mobile operators around the world
have focused on development of M2M solutions in order to
expand the business to the new type of users: machines. The
machines are connected directly to a mobile network using an appropriate
embedded wireless interface (GSM/GPRS, WCDMA, LTE) or via a gateway providing
short and wide range wireless interfaces. From the system design point of
view, the ambition is to design horizontal solutions that can enable utilization
of machines in different applications depending on their current availability
and capabilities as well as application requirements, thus avoiding silo
like solutions. One of the crucial enablers of such design is the ability
to discover resources (machines — endpoints) capable of providing required
information at a given time or acting on instructions from the end users.</t>

<t>Imagine a scenario where endpoints installed on vehicles enable
tracking of the position of these vehicles for fleet management purposes and allow
monitoring of environment parameters. During the boot-up process
endpoints register with a Resource Directory, which is hosted by the
mobile operator or somewhere in the cloud. Periodically, these endpoints
update their registration and may modify resources they offer.</t>

<t>When endpoints are not always connected, for example because they enter
a sleep mode, a remote server is usually used to provide proxy access to
the endpoints. Mobile apps or web applications for environment monitoring contact the RD, look up the endpoints capable of providing information about the environment using an appropriate set of link parameters, obtain information on how to contact them (URLs of the proxy server), and then initiate interaction to obtain information that is finally processed, displayed on the screen and usually stored in a database. Similarly, fleet management systems provide
the appropriate link parameters to the RD to look up for EPs deployed on
the vehicles the application is responsible for.</t>

</section>
<section anchor="automation" title="Use Case: Home and Building Automation">

<t>Home and commercial building automation systems can benefit from the use
of M2M web services.  The discovery requirements of these applications are
demanding. Home automation usually relies on run-time discovery to commission
the system, whereas in building automation a combination of professional
commissioning and run-time discovery is used. Both home and building automation
involve peer-to-peer interactions between endpoints, and involve battery-powered
sleeping devices.</t>

</section>
<section anchor="usecase-catalogues" title="Use Case: Link Catalogues">

<t>Resources may be shared through data brokers that have no knowledge beforehand
of who is going to consume the data. Resource Directory can be used to hold
links about resources and services hosted anywhere to make them discoverable
by a general class of applications.</t>

<t>For example, environmental and weather sensors that generate data for public
consumption may provide data to an intermediary server, or broker. Sensor
data are published to the intermediary upon changes or at regular intervals.
Descriptions of the sensors that resolve to links to sensor data may be published
to a Resource Directory. Applications wishing to consume the data can use
RD Lookup to discover and resolve links
to the desired resources and endpoints. The Resource Directory service need
not be coupled with the data intermediary service. Mapping of Resource Directories
to data intermediaries may be many-to-many.</t>

<t>Metadata in web link formats like <xref target="RFC6690"/> which may be internally stored as  triples, or relation/attribute
pairs providing metadata about resource links, need to be supported by Resource Directories . External catalogues that are
represented in other formats may be converted to common web linking formats for
storage and access by Resource Directories. Since it is common practice for these
to be URN encoded, simple and lossless structural transforms should
generally be sufficient to store external metadata in Resource Directories.</t>

<t>The additional features of Resource Directory allow sectors to be defined
to enable access to a particular set of resources from particular applications.
This provides isolation and protection of sensitive data when needed. Groups may be defined to support efficient data transport.</t>

</section>
</section>
<section anchor="finding_an_rd" title="Finding a Resource Directory">

<t>A (re-)starting device may want to find one or more resource directories
for discovery purposes.</t>

<t>The device may be pre-configured to exercise specific mechanisms for
finding the resource directory:</t>

<t><list style="numbers">
  <t>It may be configured with a specific IP address for the RD.  That IP
address may also be an anycast address, allowing the network to
forward RD requests to an RD that is topologically close; each
target network environment in which some of these preconfigured
nodes are to be brought up is then configured with a route for this
anycast address that leads to an appropriate RD.  (Instead of using
an anycast address, a multicast address can also be preconfigured.
The RD servers then need to configure one of their
interfaces with this multicast address.)</t>
  <t>It may be configured with a DNS name for the RD and use DNS to return  the IP address of the RD; it can find a DNS server to perform the lookup using the usual mechanisms for finding DNS servers.</t>
  <t>It may be configured to use a service discovery mechanism such as
  DNS-SD <xref target="RFC6763"/>.  The present specification suggests configuring
  the service with name rd._sub._coap._udp, preferably within the
  domain of the querying nodes.</t>
</list></t>

<t>For cases where the device is not specifically configured with a way
to find a resource directory, the network may want to provide a
suitable default.</t>

<t><list style="numbers">
  <t>If the address configuration of the network is performed via SLAAC,
  this is provided by the RDAO option <xref target="rdao"/>.</t>
  <t>If the address configuration of the network is performed via DHCP,
  this could be provided via a DHCP option (no such option is defined
  at the time of writing).</t>
</list></t>

<t>Finally, if neither the device nor the network offers any specific
configuration, the device may want to employ heuristics to find a
suitable resource directory.</t>

<t>The present specification does not fully define these heuristics, but
suggests a number of candidates:</t>

<t><list style="numbers">
  <t>In a 6LoWPAN, just assume the Border Router (6LBR) can act as a
  resource directory (using the ABRO option to find that <xref target="RFC6775"/>).
  Confirmation can be obtained by sending a Unicast to
  <spanx style="verb">coap://[6LBR]/.well-known/core?rt=core.rd*</spanx>.</t>
  <t>In a network that supports multicast well, discovering the RD using
  a multicast query for /.well-known/core as specified in CoRE Link
  Format <xref target="RFC6690"/>: Sending a Multicast GET to
  <spanx style="verb">coap://[MCD1]/.well-known/core?rt=core.rd*</spanx>.  RDs within the
  multicast scope will answer the query.</t>
</list></t>

<t>As some of the RD addresses obtained by the methods listed here are
just (more or less educated) guesses, endpoints MUST make use of any
error messages to very strictly rate-limit requests to candidate IP
addresses that don’t work out.  For example, an ICMP Destination
Unreachable message (and, in particular, the port unreachable code for
this message) may indicate the lack of a CoAP server on the candidate
host, or a CoAP error response code such as 4.05 “Method Not Allowed”
may indicate unwillingness of a CoAP server to act as a directory
server.</t>

<t>If multiple candidate addresses are discovered, the device may pick any of them initially,
unless the discovery method indicates a more precise selection scheme.
<!-- E.g. if a hypothetical coap+dns-sd://service.example.com is configured
as a starting point, the client should honor the SRV record's mechanisms --></t>

<section anchor="rdao" title="Resource Directory Address Option (RDAO)">

<t>The Resource Directory Address Option (RDAO) using IPv6 Neighbor Discovery (ND) carries
information about the address of the Resource Directory (RD). This information is
needed when endpoints cannot discover the Resource Directory with a link-local
or realm-local scope multicast address because the endpoint and the RD are separated by a Border Router
(6LBR). In many circumstances the availability of DHCP cannot be guaranteed either
during commissioning of the network. The presence and the use of the RD is
essential during commissioning.</t>

<t>It is possible to send multiple RDAO options in one message,
indicating as many resource directory addresses.</t>

<t>The RDAO format is:</t>

<figure title="Resource Directory Address Option" align="left" anchor="fig-rdao"><artwork><![CDATA[
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |  Length = 3   |       Valid Lifetime          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Reserved                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                          RD Address                           +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Fields:

Type:                   38

Length:                 8-bit unsigned integer.  The length of
                        the option in units of 8 bytes.
                        Always 3.

Valid Lifetime:         16-bit unsigned integer.  The length of
                        time in units of 60 seconds (relative to
                        the time the packet is received) that
                        this Resource Directory address is valid.
                        A value of all zero bits (0x0) indicates
                        that this Resource Directory address
                        is not valid anymore.

Reserved:               This field is unused.  It MUST be
                        initialized to zero by the sender and
                        MUST be ignored by the receiver.

RD Address:             IPv6 address of the RD.
]]></artwork></figure>

</section>
</section>
<section anchor="rd" title="Resource Directory">

<t>This section defines the required set of REST interfaces between a Resource Directory
(RD) and endpoints. Although the examples throughout this section assume the use of
CoAP <xref target="RFC7252"/>, these REST interfaces can also be realized using HTTP <xref target="RFC7230"/>.
In all definitions in this section, both CoAP response codes (with dot notation) and HTTP response codes
(without dot notation) are shown. An RD implementing this specification MUST support
the discovery, registration, update, lookup, and removal interfaces defined in this section.</t>

<t>All operations on the contents of the Resource Directory MUST be atomic and idempotent.</t>

<t>A resource directory MAY make the information submitted to it available to further
directories, if it can ensure that a loop does not form.  The protocol used
between directories to ensure loop-free operation is outside the scope of
this document.</t>

<section anchor="payload-content-formats" title="Payload Content Formats">

<t>Resource Directory implementations using this specification MUST support the
application/link-format content format (ct=40).</t>

<t>Resource Directories implementing this specification MAY support additional content formats.</t>

<t>Any additional content format supported by a Resource Directory implementing this
specification MUST have an equivalent serialization in the application/link-format
content format.</t>

</section>
<section anchor="discovery" title="URI Discovery">

<t>Before an endpoint can make use of an RD, it must first know the RD’s address
and port, and the URI path information for its REST APIs. This section defines
discovery of the RD and its URIs using the well-known interface of the
CoRE Link Format <xref target="RFC6690"/>. A complete set of RD discovery methods is described in <xref target="finding_an_rd"/>.</t>

<t>Discovery of the RD registration URI path is performed by sending either a multicast or
unicast GET request to <spanx style="verb">/.well-known/core</spanx> and including a Resource Type (rt)
parameter <xref target="RFC6690"/> with the value “core.rd” in the query string. Likewise, a
Resource Type parameter value of “core.rd-lookup*” is used to discover the
URIs for RD Lookup operations, core.rd* is used to discover all URI paths for RD operations, and “core.rd-group” is used to discover the URI path for RD
Group operations. Upon success, the response will contain a payload with
a link format entry for each RD function discovered, indicating the URI
of the RD function returned and the corresponding Resource Type. When performing
multicast discovery, the multicast IP address used will depend on the scope required
and the multicast capabilities of the network (see <xref target="mc-registration"/>.</t>

<t>A Resource Directory MAY provide hints about the content-formats it supports in the links it exposes or registers, using the “ct” link attribute, as shown in the example below. Clients MAY use these hints to select alternate content-formats for interaction with the Resource Directory.</t>

<t>HTTP does not support multicast and consequently only unicast discovery can be supported
using HTTP.
The well-known entry points SHOULD be provided to enable unicast discovery.</t>

<t>An implementation of this  resource directory specification MUST support query filtering for
the rt parameter as defined in <xref target="RFC6690"/>.</t>

<t>While the link targets in this discovery step are often expressed in path-absolute form,
this is not a requirement.
Clients of the RD SHOULD therefore accept URIs of all schemes they support,
both as URIs and relative references,
and not limit the set of discovered URIs to those hosted at the address used for URI discovery.</t>

<t>The URI Discovery operation can yield multiple URIs of a given resource type.
The client of the RD can use any of the discovered addresses initially.</t>

<t>The discovery request interface is specified as follows
(this is exactly the Well-Known Interface of <xref target="RFC6690"/> Section 4,
with the additional requirement that the server MUST support query filtering):</t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  EP and Client -&gt; RD</t>
  <t hangText='Method:'>
  GET</t>
  <t hangText='URI Template:'>
  /.well-known/core{?rt}</t>
  <t hangText='URI Template Variables:'>
        <list style="hanging">
        <t hangText='rt :='>
        Resource Type. SHOULD contain one of the values “core.rd”, “core.rd-lookup*”,
“core.rd-lookup-res”, “core.rd-lookup-ep”, “core.rd-lookup-gp”,
“core.rd-group” or “core.rd*”</t>
      </list>
  </t>
  <t hangText='Content-Format:'>
  application/link-format (if any)</t>
  <t hangText='Content-Format:'>
  application/link-format+json (if any)</t>
  <t hangText='Content-Format:'>
  application/link-format+cbor (if any)</t>
</list></t>

<t>The following response codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.05 “Content” or 200 “OK” with an
application/link-format, application/link-format+json, or application/link-format+cbor payload containing one or more matching entries for the RD resource.</t>
  <t hangText='Failure:'>
  4.00 “Bad Request” or 400 “Bad Request” is returned in case of a malformed request for a unicast
request.</t>
  <t hangText='Failure:'>
  No error response to a multicast request.</t>
  <t hangText='HTTP support :'>
  YES (Unicast only)</t>
</list></t>

<t>The following example shows an endpoint discovering an RD using this interface,
thus learning that the directory resource location, in this example, is /rd, and that the
content-format delivered by the server hosting the resource is application/link-format
(ct=40).  Note that it is up to the RD to choose its RD locations.</t>

<figure title="Example discovery exchange" anchor="example-discovery"><artwork><![CDATA[
Req: GET coap://[MCD1]/.well-known/core?rt=core.rd*

Res: 2.05 Content
</rd>;rt="core.rd";ct=40,
</rd-lookup/ep>;rt="core.rd-lookup-ep";ct=40,
</rd-lookup/res>;rt="core.rd-lookup-res";ct=40,
</rd-lookup/gp>;rt="core.rd-lookup-gp";ct=40,
</rd-group>;rt="core.rd-group";ct=40
]]></artwork></figure>

<t>The following example shows the way of indicating that a client may request
alternate content-formats. The Content-Format code attribute “ct” MAY include a
space-separated sequence of Content-Format codes as specified in
Section 7.2.1 of <xref target="RFC7252"/>, indicating that multiple content-formats are available.
The example below shows the required Content-Format 40 (application/link-format)
indicated as well as the CBOR and JSON representation of link format.
The RD resource locations /rd, /rd-lookup, and /rd-group are example values.
The server in this example also indicates that it is capable of providing observation on resource lookups.</t>

<t>[ The RFC editor is asked to replace these and later occurrences of MCD1, TBD64 and
TBD504 with the assigned IPv6 site-local address for “all CoRE Resource Directories” and the numeric ID values assigned by IANA to
application/link-format+cbor and application/link-format+json, respectively, as
they are defined in I-D.ietf-core-links-json. ]</t>

<figure><artwork><![CDATA[
Req: GET coap://[MCD1]/.well-known/core?rt=core.rd*

Res: 2.05 Content
</rd>;rt="core.rd";ct="40 65225",
</rd-lookup/res>;rt="core.rd-lookup-res";ct="40 TBD64 TBD504";obs,
</rd-lookup/ep>;rt="core.rd-lookup-ep";ct="40 TBD64 TBD504",
</rd-lookup/gp>;rt="core.rd-lookup-gp";ct=40 TBD64 TBD504",
</rd-group>;rt="core.rd-group";ct="40 TBD64 TBD504"
]]></artwork></figure>

<t>From a management and maintenance perspective,
it is necessary to identify the components that constitute the RD server.
The identification refers to information about for example client-server incompatibilities,
supported features, required updates and other aspects.
The URI discovery address, a described in section 4 of <xref target="RFC6690"/> can be used to find the identification.</t>

<t>It
would typically be stored in an implementation information link
(as described in <xref target="I-D.bormann-t2trg-rel-impl"/>):</t>

<figure><artwork><![CDATA[
Req: GET /.well-known/core?rel=impl-info

Res: 2.05 Content
<http://software.example.com/shiny-resource-directory/1.0beta1>;
    rel="impl-info"
]]></artwork></figure>

<t>Note that depending on the particular server’s architecture,
such a link could be anchored at the RD server’s root,
at the discovery site (as in this example) or
at individual RD components.
The latter is to be expected when different applications
are run on the same server.</t>

</section>
<section anchor="registration" title="Registration">

<t>After discovering the location of an RD, a registrant-ep or CT MAY
register the resources of the registrant-ep using the registration interface. This interface
accepts a POST from an endpoint containing the list of resources to be added
to the directory as the message payload in the CoRE Link Format <xref target="RFC6690"/>, JSON CoRE Link Format (application/link-format+json), or CBOR CoRE Link Format (application/link-format+cbor)  <xref target="I-D.ietf-core-links-json"/>, along with query
parameters indicating the name of the endpoint, and optionally the sector,
lifetime and base URI of the registration.
It is expected that other specifications will define further parameters (see
<xref target="iana-registry"/>). The RD then creates a new registration resource in the RD and returns its location. The receiving endpoint MUST use that
location when refreshing registrations using this interface. Registration
resources in the RD are kept active for the period indicated by the lifetime
parameter. The creating endpoint is responsible for refreshing the registration resource within this
period using either the registration or update interface. The registration
interface MUST be implemented to be idempotent, so that registering twice
with the same endpoint parameters ep and d (sector) does not create multiple registration resources.</t>

<t>The following rules apply for an update identified by a given (ep, d) value pair:</t>

<t><list style="symbols">
  <t>when the parameter values of the Update generate the same attribute values as already present, the location of the already existing registration is returned.</t>
  <t>when for a given (ep, d) value pair the update generates attribute values which are different from the existing one, the existing registration is removed and a new registration with a new location is created.</t>
  <t>when the (ep, d) value pair of the update is different from any existing registration, a new registration is generated.</t>
</list></t>

<t>The posted link-format document can (and typically does) contain relative references
both in its link targets and in its anchors, or contain empty anchors.
The RD server needs to resolve these references in order to faithfully represent them in lookups.
They are resolved against the base URI of the registration,
which is provided either explicitly in the <spanx style="verb">base</spanx> parameter or constructed implicitly from the requester’s URI as constructed from its network address and scheme.</t>

<t>Link format documents submitted to the resource directory are interpreted
as Modernized Link Format (see <xref target="modern6690"/>) by the RD.
A registrant-ep SHOULD NOT submit documents whose interpretations according to
<xref target="RFC6690"/> and <xref target="modern6690"/> differ
to avoid the ambiguities described in <xref target="resolution-rules"/>.</t>

<t>In practice, most links (precisely listed in <xref target="modern-safe"/>) can be submitted
without consideration for those details.</t>

<t>The registration request interface is specified as follows:</t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  EP -&gt; RD</t>
  <t hangText='Method:'>
  POST</t>
  <t hangText='URI Template:'>
  {+rd}{?ep,d,lt,base,extra-attrs*}</t>
  <t hangText='URI Template Variables:'>
        <list style="hanging">
        <t hangText='rd :='>
        RD registration URI
(mandatory). This is the location of
the RD, as obtained from discovery.</t>
        <t hangText='ep :='>
        Endpoint name (mostly mandatory). The endpoint name is an identifier
that MUST be unique within a sector.  The maximum length of this
parameter is 63 bytes.

If the RD is configured to recognize the endpoint (e.g. based on its security context),
the endpoint sets no endpoint name, and the RD assigns one based on a set of configuration parameter values.</t>
        <t hangText='d :='>
        Sector (optional). The sector to which this endpoint belongs. The maximum
length of this parameter is 63 bytes. When this parameter is not present, the
RD MAY associate the endpoint with a configured default sector or leave it empty.

The endpoint name and sector name are not set when one or both are set in an accompanying authorization token.</t>
        <t hangText='lt :='>
        Lifetime (optional). Lifetime of the registration in seconds. Range of 60-4294967295.
If no lifetime is included in the initial registration, a default value of
90000 (25 hours) SHOULD be assumed.</t>
        <t hangText='base :='>
        Base URI (optional). This parameter sets the base URI of the registration, under which
the relative links in the payload are to be interpreted. The specified URI typically does not have a path component of its own, and MUST be suitable as a base URI to resolve any relative references given in the registration. The parameter is therefore usually of the shape “scheme://authority” for
HTTP and CoAP URIs.
The URI SHOULD NOT have a query or fragment component
as any non-empty relative part in a reference would remove those parts from the resulting URI.</t>
        <t>In the absence of this parameter the scheme of the protocol, source address
and source port of the registration request are assumed.
That Base URI is constructed by concatenating the used protcol’s scheme
with the characters “://”, the requester’s source address as an address
literal and “:” followed by its port (if it was not the protocol’s default
one) in analogy to <xref target="RFC7252"/> Section 6.5.</t>
        <t>This parameter is
mandatory when the directory is filled by a third party such as an
commissioning tool.</t>
        <t>If the registrant-ep uses an ephemeral port to register with, it MUST include the base
parameter in the registration to provide a valid network path.</t>
        <t>If the registrant-ep, located behind a NAT gateway, is registering with a Resource
Directory which is on the network service side of the NAT gateway, the endpoint MUST
use a persistent port for the outgoing registration in order to provide the NAT
gateway with a valid network address for replies and incoming requests.</t>
        <t>Endpoints that register with a base that contains a path component
can not meaningfully use <xref target="RFC6690"/> Link Format due to its prevalence of
the Origin concept in relative reference resolution; they can submit
payloads for interpretation as Modernized Link Format.
Typically, links submitted by such an endpoint are of the <spanx style="verb">path-noscheme</spanx>
(starts with a path not preceded by a slash, precisely defined in <xref target="RFC3986"/> Section 3.3)
form.</t>
        <t hangText='extra-attrs :='>
        Additional registration attributes (optional). The endpoint can pass any
parameter registered at <xref target="iana-registry"/> to the directory. If the RD is
aware of the parameter’s specified semantics, it processes it accordingly.
Otherwise, it MUST store the unknown key and its value(s) as an endpoint
attribute for further lookup.</t>
      </list>
  </t>
  <t hangText='Content-Format:'>
  application/link-format</t>
  <t hangText='Content-Format:'>
  application/link-format+json</t>
  <t hangText='Content-Format:'>
  application/link-format+cbor</t>
</list></t>

<t>The following response codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.01 “Created” or 201 “Created”. The Location-Path option or Location header
MUST be included in the response. This location MUST be a stable identifier
generated by the RD as it is used for all subsequent
operations on this registration resource. The registration resource location thus returned is for the purpose of updating the lifetime
of the registration and for maintaining the content of the
registered links, including updating and deleting links.</t>
  <t>A registration with an already registered ep and d value pair
responds with the same success code and location as the original registration;
the set of links registered with the endpoint is replaced with the links
from the payload.</t>
  <t>The location MUST NOT have a query or fragment component,
as that could conflict with query parameters during the Registration Update operation.
Therefore, the Location-Query option MUST NOT be present in a successful response.</t>
  <t hangText='Failure:'>
  4.00 “Bad Request” or 400 “Bad Request”. Malformed request.</t>
  <t hangText='Failure:'>
  5.03 “Service Unavailable” or 503 “Service Unavailable”. Service could not perform the operation.</t>
  <t hangText='HTTP support:'>
  YES</t>
</list></t>

<t>If the registration fails with a Service Unavailable response
and a Max-Age option or Retry-After header,
the registering endpoint SHOULD retry the operation after the time indicated.
If the registration fails in another way, including request timeouts,
or if the Service Unavailable error persists after several retries,
or indicates a longer time than the endpoint is willing to wait,
it SHOULD pick another registration URI from the “URI Discovery” step
and if there is only one or the list is exhausted,
pick other choices from the “Finding a Resource Directory” step.
Care has to be taken to consider the freshness of results obtained earlier,
e.g. of the result of a <spanx style="verb">/.well-known/core</spanx> response,
the lifetime of an RDAO option and
of DNS responses.
Any rate limits and persistent errors from the “Finding a Resource Directory” step
must be considered for the whole registration time,
not only for a single operation.</t>

<t>The following example shows a registrant-ep with the name “node1” registering
two resources to an RD using this interface. The location “/rd”
is an example RD location discovered in a request similar to <xref target="example-discovery"/>.</t>

<figure title="Example registration payload" anchor="example-payload"><artwork><![CDATA[
Req: POST coap://rd.example.com/rd?ep=node1
Content-Format: 40
Payload:
</sensors/temp>;ct=41;rt="temperature-c";if="sensor";
      anchor="coap://spurious.example.com:5683",
</sensors/light>;ct=41;rt="light-lux";if="sensor"

Res: 2.01 Created
Location-Path: /rd/4521
]]></artwork></figure>

<t>A Resource Directory may optionally support HTTP. Here is an example of almost the same registration operation above, when done using HTTP
and the JSON Link Format.</t>

<figure><artwork><![CDATA[
Req: POST /rd?ep=node1&base=http://[2001:db8:1::1] HTTP/1.1
Host: example.com
Content-Type: application/link-format+json
Payload:
[
{"href": "/sensors/temp", "ct": "41", "rt": "temperature-c",
"if": "sensor", "anchor": "coap://spurious.example.com:5683"},
{"href": "/sensors/light", "ct": "41", "rt": "light-lux",
  "if": "sensor"}
]

Res: 201 Created
Location: /rd/4521
]]></artwork></figure>

<section anchor="simple" title="Simple Registration">

<t>Not all endpoints hosting resources are expected to know how to upload links to an RD as described in <xref target="registration"/>. Instead, simple endpoints can implement the Simple Registration approach described in this section. An RD implementing this specification MUST implement Simple Registration. However, there may
be security reasons why this form of directory discovery would be disabled.</t>

<t>This approach requires that the registrant-ep makes available the hosted resources
that it wants to be discovered, as links on its <spanx style="verb">/.well-known/core</spanx> interface as
specified in <xref target="RFC6690"/>.
The links in that document are subject to the same limitations as the payload of a registration
(with respect to <xref target="modern6690"/>).</t>

<t>The registrant-ep finds one or more addresses of the directory server as described in <xref target="finding_an_rd"/>.</t>

<t>The registrant-ep asks the selected directory server to probe its /.well-known/core and publish the links as follows:</t>

<t>The registrant-ep sends (and regularly refreshes with) a POST
request to the <spanx style="verb">/.well-known/core</spanx> URI of the directory server of choice. The body of the POST request is empty, and triggers the resource
directory server to perform GET requests at the requesting registrant-ep’s /.well-known/core to obtain the link-format payload to register.</t>

<t>The registrant-ep includes the same registration parameters in the POST request as it would per <xref target="registration"/>. The registration base URI of the registration is taken from the requesting server’s URI.</t>

<t>The Resource Directory MUST NOT query the registrant-ep’s data before sending the response; this is to accommodate very limited endpoints.
The success condition only indicates that the request was valid (i.e. the passed parameters are valid per se),
not that the link data could be obtained or parsed or was successfully registered into the RD.</t>

<t>The simple registration request interface is specified as follows:</t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  EP -&gt; RD</t>
  <t hangText='Method:'>
  POST</t>
  <t hangText='URI Template:'>
  /.well-known/core{?ep,d,lt,extra-attrs*}</t>
</list></t>

<t>URI Template Variables are as they are for registration in <xref target="registration"/>.
The base attribute is not accepted to keep the registration interface simple;
that rules out registration over CoAP-over-TCP or HTTP that would need to specify one.</t>

<t>The following response codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.04 “Changed”.</t>
  <t hangText='Failure:'>
  4.00 “Bad Request”. Malformed request.</t>
  <t hangText='Failure:'>
  5.03 “Service Unavailable”. Service could not perform the operation.</t>
  <t hangText='HTTP support:'>
  NO</t>
</list></t>

<t>For the second interaction triggered by the above, the registrant-ep takes the role of server and the RD the role of client.
(Note that this is exactly the Well-Known Interface of <xref target="RFC6690"/> Section 4):
<!-- the above paragraph could just as well be any other text;
what matters is that the tables above and below are clearly separated. --></t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  RD -&gt; EP</t>
  <t hangText='Method:'>
  GET</t>
  <t hangText='URI Template:'>
  /.well-known/core</t>
</list></t>

<t>The following response codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.05 “Content”.</t>
  <t hangText='Failure:'>
  4.00 “Bad Request”. Malformed request.</t>
  <t hangText='Failure:'>
  4.04 “Not Found”. /.well-known/core does not exist or is empty.</t>
  <t hangText='Failure:'>
  5.03 “Service Unavailable”. Service could not perform the operation.</t>
  <t hangText='HTTP support:'>
  NO</t>
</list></t>

<t>The registration resources MUST be deleted after the expiration of their lifetime. Additional operations on the registration resource cannot be executed because no registration location is returned.</t>

<t>The following example shows a registrant-ep using Simple Registration,
by simply sending an empty POST to a resource directory.</t>

<figure><artwork><![CDATA[
Req:(to RD server from [2001:db8:2::1])
POST /.well-known/core?lt=6000&ep=node1
No payload

Res: 2.04 Changed

(later)

Req: (from RD server to [2001:db8:2::1])
GET /.well-known/core
Accept: 40

Res: 2.05 Content
Content-Format: 40
Payload:
</sen/temp>
]]></artwork></figure>

</section>
<section anchor="third-party-registration" title="Third-party registration">

<t>For some applications, even Simple Registration may be too taxing
for some very constrained devices, in particular if the security requirements
become too onerous.</t>

<t>In a controlled environment (e.g. building control), the Resource Directory
can be filled by a third party device, called a Commissioning Tool (CT). The commissioning
tool can fill the Resource Directory from a database or other means. For
that purpose scheme, IP address and port of the URI of the registered device is
 the value of the “base” parameter of the registration described in <xref target="registration"/>.</t>

<t>It should be noted that the value of the “base” parameter applies to all the links of the registration and has consequences for the anchor value of the individual links as exemplified in <xref target="weblink"/>. An eventual (currently non-existing) “base” attribute of the link is not affected by the value of “base” parameter in the registration.</t>

</section>
</section>
</section>
<section anchor="group" title="RD Groups">

<t>This section defines the REST API for the creation, management, and lookup of endpoints for group operations.
Similar to endpoint registration entries in the RD, groups may be created or removed. However unlike an endpoint entry, a group entry consists of a list of endpoints and does
not have a lifetime associated with it. To make use of multicast requests with
CoAP, a group MAY have a multicast address associated with it, and should share a common set of resources.</t>

<section anchor="group-register" title="Register a Group">

<t>To create a group, a commissioning tool (CT) used to configure groups,
makes a request to the RD indicating the name of the group to create (or
update), optionally the sector the group belongs to, and optionally the multicast
address of the group. This specification does not require that the endpoints belong to the same sector as the group, but a Resource Directory implementation can impose requirements on the sectors of groups and endpoints depending on its configuration.</t>

<t>The registration message is a list of links to
registration resources of the endpoints that belong to that group.
The CT can use any URI reference discovered using endpoint lookup from the same server
or obtained by registering an endpoint using third party registration
and enter it into a group.</t>

<t>The commissioning tool SHOULD not send any target attributes with the links to the registration resources,
and the resource directory SHOULD reject registrations that contain links with unprocessable attributes.</t>

<t>Configuration of the endpoints themselves is out of
scope of this specification. Such an interface for managing the group membership
of an endpoint has been defined in <xref target="RFC7390"/>.</t>

<t>The registration request interface is specified as follows:</t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  CT -&gt; RD</t>
  <t hangText='Method:'>
  POST</t>
  <t hangText='URI Template:'>
  {+rd-group}{?gp,d,base}</t>
  <t hangText='URI Template Variables:'>
        <list style="hanging">
        <t hangText='rd-group :='>
        RD Group URI (mandatory). This is the location of the RD Group
REST API.</t>
        <t hangText='gp :='>
        Group Name (mandatory). The name of the group to be created or replaced,
unique within that sector. The maximum length of this parameter is 63 bytes.</t>
        <t hangText='d :='>
        Sector (optional). The sector to which this group belongs. The maximum
length of this parameter is 63 bytes. When this parameter is not present, the
RD MAY associate the group with a configured default sector or leave it empty.</t>
        <t hangText='base :='>
        Group Base URI (optional). This parameter sets the scheme, address and port of the multicast address associated with the group.
 When base is used, scheme and host are mandatory and
port parameter is optional.</t>
      </list>
  </t>
  <t hangText='Content-Format:'>
  application/link-format</t>
  <t hangText='Content-Format:'>
  application/link-format+json</t>
  <t hangText='Content-Format:'>
  application/link-format+cbor</t>
</list></t>

<t>The following response codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.01 “Created” or 201 “Created”. The Location header or Location-Path option MUST be returned in response to a successful group CREATE operation.  This location MUST be a stable identifier generated by the RD as it is used for delete operations of the group resource.</t>
  <t>As with the Registration operation,
the location MUST NOT have a query or fragment component.</t>
  <t hangText='Failure:'>
  4.00 “Bad Request” or 400 “Bad Request”. Malformed request.</t>
  <t hangText='Failure:'>
  5.03 “Service Unavailable” or 503 “Service Unavailable”. Service could not perform the operation.</t>
  <t hangText='HTTP support:'>
  YES</t>
</list></t>

<t>The following example shows an EP registering a group with the name “lights” which has two endpoints. The RD group path /rd-group
is an example RD location discovered in a request similar to <xref target="example-discovery"/>.</t>

<figure><artwork><![CDATA[
Req: POST coap://rd.example.com/rd-group?gp=lights
                                  &base=coap://[ff35:30:2001:db8::1]
Content-Format: 40
Payload:
</rd/4521>,
</rd/4520>

Res: 2.01 Created
Location-Path: /rd-group/12
]]></artwork></figure>

<t>A relative href value denotes the path to the registration resource of the Endpoint. When pointing to a registration resource on a different RD, the href value is a URI.</t>

</section>
<section anchor="group-removal" title="Group Removal">

<t>A group can be removed simply by sending a removal message to the location of the group registration resource which was
returned when initially registering the group. Removing a group MUST NOT remove the endpoints of the group from the RD.</t>

<t>The removal request interface is specified as follows:</t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  CT -&gt; RD</t>
  <t hangText='Method:'>
  DELETE</t>
  <t hangText='URI Template:'>
  {+location}</t>
  <t hangText='URI Template Variables:'>
        <list style="hanging">
        <t hangText='location :='>
        This is the path of the group resource returned by the RD as a result of a successful
group registration.</t>
      </list>
  </t>
</list></t>

<t>The following responses codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.02 “Deleted” or 204 “No Content” upon successful deletion</t>
  <t hangText='Failure:'>
  4.00 “Bad Request” or 400 “Bad Request”. Malformed request.</t>
  <t hangText='Failure:'>
  4.04 “Not Found” or 404 “Not Found”. Group does not exist.</t>
  <t hangText='Failure:'>
  5.03 “Service Unavailable” or 503 “Service Unavailable”. Service could not perform the operation.</t>
  <t hangText='HTTP support:'>
  YES</t>
</list></t>

<t>The following examples shows successful removal of the group from the RD with the example location value /rd-group/12.</t>

<figure><artwork><![CDATA[
Req: DELETE /rd-group/12

Res: 2.02 Deleted
]]></artwork></figure>

</section>
</section>
<section anchor="lookup" title="RD Lookup">

<t>To discover the resources registered with the RD,
a lookup interface must be provided. This lookup interface
is defined as a default, and it is assumed that RDs may also support lookups
to return resource descriptions in alternative formats (e.g. Atom or HTML
Link) or using more advanced interfaces (e.g. supporting context or semantic
based lookup).</t>

<t>RD Lookup allows lookups for groups, endpoints and resources
using attributes defined in this document and for use with the CoRE
Link Format. The result of a lookup request is the list of links (if any)
corresponding to the type of lookup.  Thus, a group lookup MUST return a list of groups, an endpoint lookup MUST return a list of endpoints and a resource lookup MUST return a list of links to resources.</t>

<t>The lookup type is selected by a URI endpoint, which is indicated by a Resource Type as per <xref target="lookup-types"/> below:</t>

<texttable title="Lookup Types" anchor="lookup-types">
      <ttcol align='left'>Lookup Type</ttcol>
      <ttcol align='left'>Resource Type</ttcol>
      <ttcol align='left'>Mandatory</ttcol>
      <c>Resource</c>
      <c>core.rd-lookup-res</c>
      <c>Mandatory</c>
      <c>Endpoint</c>
      <c>core.rd-lookup-ep</c>
      <c>Mandatory</c>
      <c>Group</c>
      <c>core.rd-lookup-gp</c>
      <c>Optional</c>
</texttable>

<section anchor="resource-lookup" title="Resource lookup">

<t>Resource lookup results in links that are semantically equivalent to the links submitted to the RD.
The links and link parameters returned by the lookup are equal to the submitted ones,
except that the target and anchor references are fully resolved.</t>

<t>Links that did not have an anchor attribute are therefore returned with the  base URI of the registration as the anchor.
Links of which href or anchor was submitted as a (full) URI are returned with these attributes unmodified.</t>

<t>Above rules allow the client to interpret the response as links without any further knowledge of the storage conventions of the RD.
The Resource Directory MAY replace the registration base URIs with a configured intermediate proxy, e.g. in the case of an HTTP lookup interface for CoAP endpoints.</t>

</section>
<section anchor="lookup-filtering" title="Lookup filtering">

<t>Using the Accept Option, the requester can control whether the returned list is returned in CoRE Link Format (<spanx style="verb">application/link-format</spanx>, default) or its alternate content-formats (<spanx style="verb">application/link-format+json</spanx> or <spanx style="verb">application/link-format+cbor</spanx>).</t>

<t>The page and count parameters are used to obtain lookup results in specified increments using pagination, where count specifies how many links to return and page specifies which subset of links organized in sequential pages, each containing ‘count’ links, starting with link zero and page zero. Thus, specifying count of 10 and page of 0 will return the first 10 links in the result set (links 0-9). Count = 10 and page = 1 will return the next ‘page’ containing links 10-19, and so on.</t>

<t>Multiple search criteria MAY be included in a lookup. All included criteria MUST match for a link to be returned. The Resource Directory MUST support matching with multiple search criteria.</t>

<t>A link matches a search criterion if it has an attribute of the same name and the same value, allowing for a trailing “*” wildcard operator as in Section 4.1 of <xref target="RFC6690"/>.
Attributes that are defined as “link-type” match if the search value matches any of their values (see Section 4.1 of <xref target="RFC6690"/>; e.g. <spanx style="verb">?if=core.s</spanx> matches <spanx style="verb">;if="abc core.s";</spanx>).
A link also matches a search criterion if the link that would be produced for any of its containing entities would match the criterion, or an entity contained in it would: A search criterion matches an endpoint if it matches the endpoint itself, any of the groups it is contained in or any resource it contains. A search criterion matches a resource if it matches the resource itself, the resource’s endpoint, or any of the endpoint’s groups.</t>

<t>Note that <spanx style="verb">href</spanx> is a valid search criterion and matches target references. Like all search criteria, on a resource lookup it can match the target reference of the resource link itself, but also the registration resource of the endpoint that registered it, or any group resource that endpoint is contained in.
Queries for resource link targets MUST be in URI form (i.e. not relative references) and are matched against a resolved link target. Queries for groups and endpoints SHOULD be expressed in path-absolute form if possible and MUST be expressed in URI form otherwise; the RD SHOULD recognize either.</t>

<t>Endpoints that are interested in a lookup result repeatedly or continuously can use
mechanisms like ETag caching, resource observation (<xref target="RFC7641"/>),
or any future mechanism that might allow more efficient observations of collections.
These are advertised, detected and used according to their own specifications
and can be used with the lookup interface as with any other resource.</t>

<t>When resource observation is used,
every time the set of matching links changes, or the content of a matching link changes, the RD sends a notification with the matching link set.
The notification contains the successful current response to the given request,
especially with respect to representing zero matching links
(see “Success” item below).</t>

<t>The lookup interface is specified as follows:</t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  Client -&gt; RD</t>
  <t hangText='Method:'>
  GET</t>
  <t hangText='URI Template:'>
  {+type-lookup-location}{?page,count,search*}</t>
  <t hangText='URI Template Variables:'>
        <list style="hanging">
        <t hangText='type-lookup-location :='>
        RD Lookup URI for a given lookup type (mandatory). The address is
discovered as described in <xref target="discovery"/>.</t>
        <t hangText='search :='>
        Search criteria for limiting the number of results (optional).</t>
        <t hangText='page :='>
        Page (optional). Parameter cannot be used without the count
parameter. Results are returned from result set in pages that contain
‘count’ links starting from index (page * count). Page numbering starts
with zero.</t>
        <t hangText='count :='>
        Count (optional). Number of results is limited to this parameter value. If
the page parameter is also present, the response MUST only include ‘count’
links starting with the (page * count) link in the result set from the query. If
the count parameter is not present, then the response MUST return all matching
links in the result set. Link numbering starts with zero.</t>
        <t hangText='Content-Format:'>
        application/link-format (optional)</t>
        <t hangText='Content-Format:'>
        application/link-format+json (optional)</t>
        <t hangText='Content-Format:'>
        application/link-format+cbor (optional)</t>
      </list>
  </t>
</list></t>

<t>The following responses codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.05 “Content” or 200 “OK” with an <spanx style="verb">application/link-format</spanx>, <spanx style="verb">application/link-format+cbor</spanx>, or <spanx style="verb">application/link-format+json</spanx> payload containing matching entries for the lookup.

The payload can contain zero links (which is an empty payload, <spanx style="verb">80</spanx> (hex) or <spanx style="verb">[]</spanx> in the respective content format),
indicating that no entities matched the request.</t>
  <t hangText='Failure:'>
  No error response to a multicast request.</t>
  <t hangText='Failure:'>
  4.00 “Bad Request” or 400 “Bad Request”. Malformed request.</t>
  <t hangText='Failure:'>
  5.03 “Service Unavailable” or 503 “Service Unavailable”. Service could not perform the operation.</t>
  <t hangText='HTTP support:'>
  YES</t>
</list></t>

<t>The group and endpoint lookup return registration resources which can only be manipulated by the registering endpoint. Examples of group and endpoint lookup belong to the management aspects of the RD and are shown in <xref target="ep-gp-lookup"/>. The resource lookup examples are shown in this section.</t>

</section>
<section anchor="resource-lookup-examples" title="Resource lookup examples">

<t>The examples in this section assume the existence of CoAP hosts with a default CoAP port 61616. HTTP hosts are possible and do not change the nature of the examples.</t>

<t>The following example shows a client performing a resource lookup with the example resource look-up locations discovered in <xref target="example-discovery"/>:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/res?rt=temperature

Res: 2.05 Content
<coap://[2001:db8:3::123]:61616/temp>;rt="temperature";
           anchor="coap://[2001:db8:3::123]:61616"
]]></artwork></figure>

<t>The same lookup using the CBOR Link Format media type:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/res?rt=temperature
Accept: TBD64

Res: 2.05 Content
Content-Format: TBD64
Payload in Hex notation:
81A3017823636F61703A2F2F5B323030313A6462383A333A3A3132335D3A363136313
62F74656D7003781E636F61703A2F2F5B323030313A6462383A333A3A3132335D3A36
31363136096B74656D7065726174757265
Decoded payload:
[{1: "coap://[2001:db8:3::123]:61616/temp", 9: "temperature",
3: "coap://[2001:db8:3::123]:61616"}]
]]></artwork></figure>

<t>A client that wants to be notified of new resources as they show up can use
observation:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/res?rt=light
Observe: 0

Res: 2.05 Content
Observe: 23
Payload: empty

(at a later point in time)

Res: 2.05 Content
Observe: 24
Payload:
<coap://[2001:db8:3::124]/west>;rt="light";
    anchor="coap://[2001:db8:3::124]",
<coap://[2001:db8:3::124]/south>;rt="light";
    anchor="coap://[2001:db8:3::124]",
<coap://[2001:db8:3::124]/east>;rt="light";
    anchor="coap://[2001:db8:3::124]"
]]></artwork></figure>

<t>The following example shows a client performing a paginated resource lookup</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/res?page=0&count=5

Res: 2.05 Content
<coap://[2001:db8:3::123]:61616/res/0>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616",
<coap://[2001:db8:3::123]:61616/res/1>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616",
<coap://[2001:db8:3::123]:61616/res/2>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616",
<coap://[2001:db8:3::123]:61616/res/3>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616",
<coap://[2001:db8:3::123]:61616/res/4>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616"

Req: GET /rd-lookup/res?page=1&count=5

Res: 2.05 Content
<coap://[2001:db8:3::123]:61616/res/5>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616",
<coap://[2001:db8:3::123]:61616/res/6>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616",
<coap://[2001:db8:3::123]:61616/res/7>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616",
<coap://[2001:db8:3::123]:61616/res/8>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616",
<coap://[2001:db8:3::123]:61616/res/9>;rt=sensor;ct=60;
    anchor="coap://[2001:db8:3::123]:61616"
]]></artwork></figure>

<t>The following example shows a client performing a lookup of all resources from
endpoints of all endpoints of a given endpoint type. It assumes that two endpoints (with endpoint
names <spanx style="verb">sensor1</spanx> and <spanx style="verb">sensor2</spanx>) have previously registered with their respective
addresses <spanx style="verb">coap://sensor1.example.com</spanx> and <spanx style="verb">coap://sensor2.example.com</spanx>, and
posted the very payload of the 6th request of section 5 of <xref target="RFC6690"/>.</t>

<t>It demonstrates how absolute link targets stay unmodified, while relative ones
are resolved:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/res?et=oic.d.sensor

<coap://sensor1.example.com/sensors>;ct=40;title="Sensor Index";
    anchor="coap://sensor1.example.com",
<coap://sensor1.example.com/sensors/temp>;rt="temperature-c";
    if="sensor"; anchor="coap://sensor1.example.com",
<coap://sensor1.example.com/sensors/light>;rt="light-lux";
    if="sensor"; anchor="coap://sensor1.example.com",
<http://www.example.com/sensors/t123>;rel="describedby";
    anchor="coap://sensor1.example.com/sensors/temp",
<coap://sensor1.example.com/t>;rel="alternate";
    anchor="coap://sensor1.example.com/sensors/temp",
<coap://sensor2.example.com/sensors>;ct=40;title="Sensor Index";
    anchor="coap://sensor2.example.com",
<coap://sensor2.example.com/sensors/temp>;rt="temperature-c";
    if="sensor"; anchor="coap://sensor2.example.com",
<coap://sensor2.example.com/sensors/light>;rt="light-lux";
    if="sensor"; anchor="coap://sensor2.example.com",
<http://www.example.com/sensors/t123>;rel="describedby";
    anchor="coap://sensor2.example.com/sensors/temp",
<coap://sensor2.example.com/t>;rel="alternate";
    anchor="coap://sensor2.example.com/sensors/temp"
]]></artwork></figure>

</section>
</section>
<section anchor="policies" title="Security policies">

<t>The Resource Directory (RD) provides assistance to applications situated on a selection of nodes to discover endpoints on connected nodes. This section discusses different security aspects of accessing the RD.</t>

<t>The contents of the RD are inserted in two ways:</t>

<t><list style="numbers">
  <t>The node hosting the discoverable endpoint fills the RD with the contents of /.well-known/core by:
  <list style="symbols">
      <t>Storing the contents directly into RD (see <xref target="registration"/>)</t>
      <t>Requesting the RD to load the contents from /.well-known/core (see <xref target="simple"/>)</t>
    </list></t>
  <t>A Commissioning Tool (CT) fills the RD with endpoint information for a set of discoverable nodes. (see <xref target="registration"/> with base=authority parameter value)</t>
</list></t>

<t>In both cases, the nodes filling the RD should be authenticated and authorized to change the contents of the RD. An Authorization Server (AS) is responsible to assign a token to the registering node to authorize the node to discover or register endpoints in a given RD <xref target="I-D.ietf-ace-oauth-authz"/>.</t>

<t>It can be imagined that an installation is divided in a set of security regions, each one with its own RD(s) to discover the endpoints that are part of a given security region. An endpoint that wants to discover an RD, responsible for a given region, needs to be authorized to learn the contents of a given RD. Within a region, for a given RD, a more fine-grained security division is possible based on the values of the endpoint registration parameters. Authorization to discover endpoints with a given set of filter values is recommended for those cases.</t>

<t>When a node registers its endpoints, criteria are needed to authorize the node to enter them. An important aspect is the uniqueness of the (endpoint name, and optional sector) pair within the RD. Consider the two cases separately: (1) CT registers endpoints, and (2) the registering node registers its own endpoint(s).
   * A CT needs authorization to register a set of endpoints. This authorization can be based on the region, i.e. a given CT is authorized to register any endpoint (endpoint name, sector) into a given RD, or to register an endpoint with (endpoint name, sector) value pairs assigned by the AS, or can be more fine-grained, including a subset of registration parameter values.
   * A given endpoint that registers itself, needs to proof its possession of its unique (endpoint name, sector) value pair. Alternatively, the AS can authorize the endpoint to register with an (endpoint name, sector) value pair assigned by the AS.
   *
A separate document needs to specify these aspects to ensure interoperability between registering nodes and RD. The subsections below give some hints how to handle a subset of the different aspects.</t>

<section anchor="secure-rd-discovery" title="Secure RD discovery">

<t>The Resource Server (RS) discussed in <xref target="I-D.ietf-ace-oauth-authz"/> is equated to the RD. The client (C) needs to discover the RD as discussed in <xref target="finding_an_rd"/>. C can discover the related AS by sending a request to the RD. The RD denies the request by sending the address of the related AS, as discussed in section 5.1 of <xref target="I-D.ietf-ace-oauth-authz"/>.
The client MUST send an authorization request to the AS. When appropriate, the AS returns a token that specifies the authorization permission which needs to be specified in a separate document.</t>

</section>
<section anchor="secure-rd-filtering" title="Secure RD filtering">

<t>The authorized parameter values for the queries by a given endpoint must be registered by the AS. The AS communicates the parameter values in the token. A separate document needs to specify the parameter value combinations and their storage in the token. The RD decodes the token and checks the validity of the queries of the client.</t>

</section>
<section anchor="secure-ep" title="Secure endpoint Name assignment">

<t>This section only considers the assignment of a name to the endpoint based on an automatic mechanism without use of AS. More elaborate protocols are out of scope. The registering endpoint is authorized by the AS to discover the RD and add registrations. A token is provided by the AS and communicated from registering endpoint to RD.  It is assumed that DTLS is used to secure the channel between registering endpoint and RD, where the registering endpoint is the DTLS client. Assuming that the client is provided by a certificate at manufacturing time, the certificate is uniquely identified by the CN field and the serial number. The RD can assign a unique endpoint name by using the certificate identifier as endpoint name. Proof of possession of the endpoint name by the registering endpoint is checked by encrypting the certificate identifier with the private key of the registering endpoint, which the RD can decrypt with the public key stored in the certificate.
Even simpler, the authorized registering endpoint can generate a random number (or string) that identifies the endpoint. The RD can check for the improbable replication of the random value. The RD MUST check that registering endpoint uses only one random value for each authorized endpoint.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>The security considerations as described in Section 7 of <xref target="RFC5988"/> and
Section 6 of <xref target="RFC6690"/> apply. The <spanx style="verb">/.well-known/core</spanx> resource may be
protected e.g. using DTLS when hosted on a CoAP server as described in
<xref target="RFC7252"/>. DTLS or TLS based security SHOULD be used on all resource
directory interfaces defined in this document<!-- TODO: Improve the exact DTLS
or TLS security requirements and references  -->.</t>

<section anchor="endpoint_identification" title="Endpoint Identification and Authentication">

<t>An Endpoint (name, sector) pair is unique within the et of endpoints regsitered by the RD. An Endpoint MUST NOT be identified by its protocol, port or IP
address as these may change over the lifetime of an Endpoint.</t>

<t>Every operation performed by an Endpoint on a resource directory
SHOULD be mutually authenticated using Pre-Shared Key, Raw Public Key or
Certificate based security.</t>

<t>Consider the following threat: two devices A and B are registered at a single server. Both devices have unique, per-device credentials for use with DTLS to make sure that only parties with authorization to access A or B can do so.</t>

<t>Now, imagine that a malicious device A wants to sabotage the device B. It uses its credentials during the DTLS exchange. Then, it specifies the
endpoint name of device B as the name of its own endpoint in device A. If the server does not check
whether the identifier provided in the DTLS handshake matches the
identifier used at the CoAP layer then it may be inclined to use the
endpoint name for looking up what information to provision to the malicious device.</t>

<t><xref target="secure-ep"/> specifies an example that removes this threat for endpoints that have a certificate installed.</t>

</section>
<section anchor="access-control" title="Access Control">

<t>Access control SHOULD be performed separately for the RD registration, Lookup, and
group API paths, as different endpoints may be authorized to register
with an RD from those authorized to lookup endpoints from the RD. Such access
control SHOULD be performed in as fine-grained a level as possible. For example
access control for lookups could be performed either at the sector, endpoint
or resource level.</t>

</section>
<section anchor="denial-of-service-attacks" title="Denial of Service Attacks">

<t>Services that run over UDP unprotected are vulnerable to unknowingly
become part of a DDoS attack as UDP does not require return
routability check. Therefore, an attacker can easily spoof the source
IP of the target entity and send requests to such a service which
would then respond to the target entity. This can be used for
large-scale DDoS attacks on the target. Especially, if the service
returns a response that is order of magnitudes larger than the
request, the situation becomes even worse as now the attack can be
amplified. DNS servers have been widely used for DDoS amplification
attacks. There is also a danger that NTP Servers could become implicated in denial-of-service (DoS) attacks since they run on unprotected UDP, there
is no return routability check, and they can have a large amplification factor.
The responses from the NTP server were found to be
19 times larger than the request. A Resource Directory (RD) which responds
to wild-card lookups is potentially vulnerable if run with CoAP over UDP.
Since there is no return routability check and the responses can be significantly
larger than requests, RDs can unknowingly become part of a DDoS amplification
attack.</t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<section anchor="iana-rt" title="Resource Types">

<t>IANA is asked to enter the following values into the Resource Type (rt=) Link
Target Attribute Values sub-registry of the Constrained Restful Environments
(CoRE) Parameters registry defined in <xref target="RFC6690"/>:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>core.rd</c>
      <c>Directory resource of an RD</c>
      <c>RFCTHIS <xref target="discovery"/></c>
      <c>core.rd-group</c>
      <c>Group directory resource of an RD</c>
      <c>RFCTHIS <xref target="discovery"/></c>
      <c>core.rd-lookup-res</c>
      <c>Resource lookup of an RD</c>
      <c>RFCTHIS <xref target="discovery"/></c>
      <c>core.rd-lookup-ep</c>
      <c>Endpoint lookup of an RD</c>
      <c>RFCTHIS <xref target="discovery"/></c>
      <c>core.rd-lookup-gp</c>
      <c>Group lookup of an RD</c>
      <c>RFCTHIS <xref target="discovery"/></c>
      <c>core.rd-ep</c>
      <c>Endpoint resource of an RD</c>
      <c>RFCTHIS <xref target="lookup"/></c>
      <c>core.rd-gp</c>
      <c>Group resource of an RD</c>
      <c>RFCTHIS <xref target="lookup"/></c>
</texttable>

</section>
<section anchor="ipv6-nd-resource-directory-address-option" title="IPv6 ND Resource Directory Address Option">

<t>This document registers one new ND option type under the sub-registry “IPv6 Neighbor Discovery Option Formats”:</t>

<t><list style="symbols">
  <t>Resource Directory address Option (38)</t>
</list></t>

</section>
<section anchor="iana-registry" title="RD Parameter Registry">

<t>This specification defines a new sub-registry for registration and lookup
parameters called “RD Parameters” under “CoRE Parameters”. Although this
specification defines a basic set of parameters, it is expected that other
standards that make use of this interface will define new ones.</t>

<t>Each entry in the registry must include</t>

<t><list style="symbols">
  <t>the human readable name of the parameter,</t>
  <t>the short name as used in query parameters or link attributes,</t>
  <t>indication of whether it can be passed as a query parameter at registration of endpoints or groups, as a query parameter in lookups, or be expressed as a link attribute,</t>
  <t>validity requirements if any, and</t>
  <t>a description.</t>
</list></t>

<t>The query parameter MUST be both a valid URI query key <xref target="RFC3986"/> and a parmname as used in <xref target="RFC5988"/>.</t>

<t>The description must give details on which registrations they apply to (Endpoint, group registrations or both? Can they be updated?), and how they are to be processed in lookups.</t>

<t>The mechanisms around new RD parameters should be designed in such a way that they tolerate RD implementations that are unaware of the parameter and expose any parameter passed at registration or updates on in endpoint lookups. (For example, if a parameter used at registration were to be confidential, the registering endpoint should be instructed to only set that parameter if the RD advertises support for keeping it confidential at the discovery step.)</t>

<t>Initial entries in this sub-registry are as follows:</t>

<texttable title="RD Parameters" anchor="tab-registry">
      <ttcol align='left'>Full name</ttcol>
      <ttcol align='left'>Short</ttcol>
      <ttcol align='left'>Validity</ttcol>
      <ttcol align='left'>Use</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Endpoint Name</c>
      <c>ep</c>
      <c>&#160;</c>
      <c>RLA</c>
      <c>Name of the endpoint, max 63 bytes</c>
      <c>Lifetime</c>
      <c>lt</c>
      <c>60-4294967295</c>
      <c>R</c>
      <c>Lifetime of the registration in seconds</c>
      <c>Sector</c>
      <c>d</c>
      <c>&#160;</c>
      <c>RLA</c>
      <c>Sector to which this endpoint belongs</c>
      <c>Registration Base URI</c>
      <c>base</c>
      <c>URI</c>
      <c>RLA</c>
      <c>The scheme, address and port and path at which this server is available</c>
      <c>Group Name</c>
      <c>gp</c>
      <c>&#160;</c>
      <c>RLA</c>
      <c>Name of a group in the RD</c>
      <c>Page</c>
      <c>page</c>
      <c>Integer</c>
      <c>L</c>
      <c>Used for pagination</c>
      <c>Count</c>
      <c>count</c>
      <c>Integer</c>
      <c>L</c>
      <c>Used for pagination</c>
      <c>Endpoint Type</c>
      <c>et</c>
      <c>&#160;</c>
      <c>RLA</c>
      <c>Semantic name of the endpoint (see <xref target="et-registry"/>)</c>
</texttable>

<t>(Short: Short name used in query parameters or link attributes. Use: R = used at registration, L = used at lookup, A = expressed in link attribute</t>

<t>The descriptions for the options defined in this document are only summarized here.
To which registrations they apply and when they are to be shown is described in the respective sections of this document.</t>

<t>The IANA policy for future additions to the sub-registry is “Expert Review”
as described in <xref target="RFC8126"/>. The evaluation should consider
formal criteria,
duplication of functionality (Is the new entry redundant with an existing one?),
topical suitability (E.g. is the described property actually a property of the endpoint and not a property of a particular resource, in which case it should go into the payload of the registration and need not be registered?),
and the potential for conflict with commonly used link attributes (For example, <spanx style="verb">if</spanx> could be used as a parameter for conditional registration if it were not to be used in lookup or attributes, but would make a bad parameter for lookup, because a resource lookup with an <spanx style="verb">if</spanx> query parameter could ambiguously filter by the registered endpoint property or the <xref target="RFC6690"/> link attribute).
It is expected that the registry will receive between 5 and 50 registrations in total over the next years.</t>

<section anchor="et-description" title="Full description of the “Endpoint Type” Registration Parameter">

<t>An endpoint registering at an RD can describe itself with endpoint types,
similar to how resources are described with Resource Types in <xref target="RFC6690"/>.
An endpoint type is expressed as a string, which can be either a URI or one of
the values defined in the Endpoint Type sub-registry.
Endpoint types can be passed in the <spanx style="verb">et</spanx> query parameter as part of extra-attrs
at the Registration step,
are shown on endpoint lookups using the <spanx style="verb">et</spanx> target attribute,
and can be filtered for using <spanx style="verb">et</spanx> as a search criterion in resource and
endpoint lookup.
Multiple endpoint types are given as separate query parameters or link
attributes.</t>

<t>Note that Endpoint Type differs from Resource Type in that it uses multiple
attributes rather than space separated values.
As a result, Resource Directory implementations automatically support correct
filtering in the lookup interfaces from the rules for unknown endpoint
attributes.</t>

</section>
</section>
<section anchor="et-registry" title="“Endpoint Type” (et=) RD Parameter values">

<t>This specification establishes a new sub-registry under “CoRE Parameters”
called ‘“Endpoint Type” (et=) RD Parameter values’.
The registry properties (required policy, requirements, template) are identical
to those of the Resource Type parameters in <xref target="RFC6690"/>, in short:</t>

<t>The review policy is IETF Review for values starting with “core”, and
Specification Required for others.</t>

<t>The requirements to be enforced are:</t>

<t><list style="symbols">
  <t>The values MUST be related to the purpose described in <xref target="et-description"/>.</t>
  <t>The registered values MUST conform to the ABNF reg-rel-type definition of
<xref target="RFC6690"/> and MUST NOT be a URI.</t>
  <t>It is recommended to use the period “.” character for segmentation.</t>
</list></t>

<t>The registry is initially empty.</t>

</section>
<section anchor="mc-registration" title="Multicast Address Registration">

<t>IANA has
   assigned the following multicast addresses for use by CoAP nodes:</t>

<t>IPv4  – “all CoRE resource directories” address, from the “IPv4
      Multicast Address Space Registry” equal to “All CoAP Nodes”, 224.0.1.187.  As the address is used for
      discovery that may span beyond a single network, it has come from
      the Internetwork Control Block (224.0.1.x, RFC 5771).</t>

<t>IPv6  – “all CoRE resource directories” address MCD1 (suggestions FF0X::FE), from the “IPv6 Multicast
      Address Space Registry”, in the “Variable Scope Multicast
      Addresses” space (RFC 3307).  Note that there is a distinct
      multicast address for each scope that interested CoAP nodes should
      listen to; CoAP needs the Link-Local and Site-Local scopes only.</t>

</section>
</section>
<section anchor="examples" title="Examples">

<t>Two examples are presented: a Lighting Installation example in <xref target="lt-ex"/> and a LWM2M example in <xref target="lwm2m-ex"/>.</t>

<section anchor="lt-ex" title="Lighting Installation">

<t>This example shows a simplified lighting installation which makes use of
the Resource Directory (RD) with a CoAP interface to facilitate the installation and start up of
the application code in the lights and sensors. In particular, the example
leads to the definition of a group and the enabling of the corresponding
multicast address. No conclusions must be drawn on the realization of actual
installation or naming procedures, because the example only “emphasizes” some of the issues
that may influence the use of the RD and does not pretend to be normative.</t>

<section anchor="lt-in-ch" title="Installation Characteristics">

<t>The example assumes that the installation is managed. That means that a Commissioning
Tool (CT) is used to authorize the addition of nodes, name them, and name
their services. The CT can be connected to the installation in many ways:
the CT can be part of the installation network, connected by WiFi to the
installation network, or connected via GPRS link, or other method.</t>

<t>It is assumed that there are two naming authorities for the installation:
(1) the network manager that is responsible for the correct operation of
the network and the connected interfaces, and (2) the lighting manager that
is responsible for the correct functioning of networked lights and sensors.
The result is the existence of two naming schemes coming from the two managing
entities.</t>

<t>The example installation consists of one presence sensor, and two luminaries,
luminary1 and luminary2, each with their own wireless interface. Each luminary
contains three lamps: left, right and middle. Each luminary is accessible
through one endpoint. For each lamp a resource exists to modify the settings
of a lamp in a luminary. The purpose of the installation is that the presence
sensor notifies the presence of persons to a group of lamps. The group of
lamps consists of: middle and left lamps of luminary1 and right lamp of luminary2.</t>

<t>Before commissioning by the lighting manager, the network is installed and
access to the interfaces is proven to work by the network manager.</t>

<t>At the moment of installation, the network under installation is not necessarily
connected to the DNS infra structure. Therefore, SLAAC IPv6 addresses are
assigned to CT, RD, luminaries and sensor shown in <xref target="interface-S"/> below:</t>

<texttable title="interface SLAAC addresses" anchor="interface-S">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>IPv6 address</ttcol>
      <c>luminary1</c>
      <c>2001:db8:4::1</c>
      <c>luminary2</c>
      <c>2001:db8:4::2</c>
      <c>Presence sensor</c>
      <c>2001:db8:4::3</c>
      <c>Resource directory</c>
      <c>2001:db8:4::ff</c>
</texttable>

<t>In <xref target="rd-en"/> the use of resource directory during installation is
presented.</t>

</section>
<section anchor="rd-en" title="RD entries">

<t>It is assumed that access to the DNS infrastructure is not always possible
during installation. Therefore, the SLAAC addresses are used in this section.</t>

<t>For discovery, the resource types (rt) of the devices are important. The
lamps in the luminaries have rt: light, and the presence sensor has rt: p-sensor.
The endpoints have names which are relevant to the light installation manager.
In this case luminary1, luminary2, and the presence sensor are located in
room 2-4-015, where luminary1 is located at the window and luminary2 and
the presence sensor are located at the door. The endpoint names reflect
this physical location. The middle, left and right lamps are accessed via
path /light/middle, /light/left, and /light/right respectively. The identifiers
relevant to the Resource Directory are shown in <xref target="endpoint"/> below:</t>

<texttable title="Resource Directory identifiers" anchor="endpoint">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>endpoint</ttcol>
      <ttcol align='left'>resource path</ttcol>
      <ttcol align='left'>resource type</ttcol>
      <c>luminary1</c>
      <c>lm_R2-4-015_wndw</c>
      <c>/light/left</c>
      <c>light</c>
      <c>luminary1</c>
      <c>lm_R2-4-015_wndw</c>
      <c>/light/middle</c>
      <c>light</c>
      <c>luminary1</c>
      <c>lm_R2-4-015_wndw</c>
      <c>/light/right</c>
      <c>light</c>
      <c>luminary2</c>
      <c>lm_R2-4-015_door</c>
      <c>/light/left</c>
      <c>light</c>
      <c>luminary2</c>
      <c>lm_R2-4-015_door</c>
      <c>/light/middle</c>
      <c>light</c>
      <c>luminary2</c>
      <c>lm_R2-4-015_door</c>
      <c>/light/right</c>
      <c>light</c>
      <c>Presence sensor</c>
      <c>ps_R2-4-015_door</c>
      <c>/ps</c>
      <c>p-sensor</c>
</texttable>

<t>It is assumed that the CT knows the RD’s address, and has performed URI
discovery on it that returned a response like the one in the <xref target="discovery"/> example.</t>

<t>The CT inserts the endpoints of the luminaries and the sensor in the RD
using the registration base URI parameter (base) to specify the interface address:</t>

<figure><artwork><![CDATA[
Req: POST coap://[2001:db8:4::ff]/rd
  ?ep=lm_R2-4-015_wndw&base=coap://[2001:db8:4::1]&d=R2-4-015
Payload:
</light/left>;rt="light",
</light/middle>;rt="light",
</light/right>;rt="light"

Res: 2.01 Created
Location-Path: /rd/4521
]]></artwork></figure>

<figure><artwork><![CDATA[
Req: POST coap://[2001:db8:4::ff]/rd
  ?ep=lm_R2-4-015_door&base=coap://[2001:db8:4::2]&d=R2-4-015
Payload:
</light/left>;rt="light",
</light/middle>;rt="light",
</light/right>;rt="light"

Res: 2.01 Created
Location-Path: /rd/4522
]]></artwork></figure>

<figure><artwork><![CDATA[
Req: POST coap://[2001:db8:4::ff]/rd
  ?ep=ps_R2-4-015_door&base=coap://[2001:db8:4::3]d&d=R2-4-015
Payload:
</ps>;rt="p-sensor"

Res: 2.01 Created
Location-Path: /rd/4523
]]></artwork></figure>

<t>The sector name d=R2-4-015 has been added for an efficient lookup because
filtering on “ep” name is more awkward. The same sector name is communicated to
the two luminaries and the presence sensor by the CT.</t>

<t>The group is specified in the RD. The base parameter is set to the site-local
multicast address allocated to the group.
In the POST in the example below, two luminary endpoints are registered as members of the group. They share a common resource set to which a multicast request can be sent and executed by all members of the group.</t>

<figure><artwork><![CDATA[
Req: POST coap://[2001:db8:4::ff]/rd-group
?gp=grp_R2-4-015&base=coap://[ff05::1]
Payload:
</rd/4521>,
</rd/4522>

Res: 2.01 Created
Location-Path: /rd-group/501
]]></artwork></figure>

<t>After the filling of the RD by the CT, the application in the luminaries
can learn to which groups they belong, and enable their interface for the
multicast address.</t>

<t>The luminary, knowing its sector and own IPv6 address, looks up the groups
containing light resources it is assigned to:</t>

<figure><artwork><![CDATA[
Req: GET coap://[2001:db8:4::ff]/rd-lookup/gp
  ?d=R2-4-015&base=coap://[2001:db8:4::1]&rt=light

Res: 2.05 Content
</rd-group/501>;gp="grp_R2-4-015";base="coap://[ff05::1]"
]]></artwork></figure>

<t>From the returned base parameter value, the luminary learns the multicast address
of the multicast group.</t>

<t>Alternatively, the CT can communicate the multicast address directly to the
luminaries by using the “coap-group” resource specified in <xref target="RFC7390"/>.</t>

<figure><artwork><![CDATA[
Req: POST coap://[2001:db8:4::1]/coap-group
Content-Format: application/coap-group+json
Payload:
{ "a": "[ff05::1]", "n": "grp_R2-4-015"}

Res: 2.01 Created
Location-Path: /coap-group/1
]]></artwork></figure>

<t>Dependent on the situation, only the address, “a”, or the name, “n”, is specified
in the coap-group resource.</t>

<t>The presence sensor can learn the presence of groups that support resources with rt=light in its own sector by sending the request:</t>

<figure><artwork><![CDATA[
Req: GET coap://[2001:db8:4::ff]/rd-lookup/gp?d=R2-4-015&rt=light

Res: 2.05 Content
</rd-group/501>;gp="grp_R2-4-015";base="coap://[ff05::1]"
]]></artwork></figure>

<t>The presence sensor learns the multicast address to use for sending messages to the luminaries.</t>

</section>
</section>
<section anchor="lwm2m-ex" title="OMA Lightweight M2M (LWM2M) Example">

<t>This example shows how the OMA LWM2M specification makes use of Resource Directory (RD).</t>

<t>OMA LWM2M is a profile for device services based on CoAP(OMA Name Authority). LWM2M defines a simple object model and a number of abstract interfaces and operations for device management and device service enablement.</t>

<t>An LWM2M server is an instance of an LWM2M middleware service layer, containing a Resource Directory along with other LWM2M interfaces defined by the LWM2M specification.</t>

<t>CoRE Resource Directory (RD) is used to provide the LWM2M Registration interface.</t>

<t>LWM2M does not provide for registration sectors and does not currently
use the rd-group or rd-lookup interfaces.</t>

<t>The LWM2M specification describes a set of interfaces and a resource model used between a LWM2M device and an LWM2M server. Other interfaces, proxies, and applications are currently out of scope for LWM2M.</t>

<t>The location of the LWM2M Server and RD URI path is provided by the LWM2M Bootstrap process, so no dynamic discovery of the RD is used. LWM2M Servers and endpoints are not required to implement the /.well-known/core resource.</t>

<section anchor="lwm2m-obj" title="The LWM2M Object Model">

<t>The OMA LWM2M object model is based on a simple 2 level class hierarchy consisting of Objects and Resources.</t>

<t>An LWM2M Resource is a REST endpoint, allowed to be a single value or an array of values of the same data type.</t>

<t>An LWM2M Object is a resource template and container type that encapsulates a set of related resources. An LWM2M Object represents a specific type of information source; for example, there is a LWM2M Device Management object that represents a network connection, containing resources that represent individual properties like radio signal strength.</t>

<t>Since there may potentially be more than one of a given type object, for example more than one network connection, LWM2M defines instances of objects that contain the resources that represent a specific physical thing.</t>

<t>The URI template for LWM2M consists of a base URI followed by Object, Instance, and Resource IDs:</t>

<t>{/base-uri}{/object-id}{/object-instance}{/resource-id}{/resource-instance}</t>

<t>The five variables given here are strings.  base-uri can also have the
special value “undefined” (sometimes called “null” in RFC 6570).
Each of the variables object-instance, resource-id, and
resource-instance can be the special value “undefined” only if the
values behind it in this sequence also are “undefined”.  As a special
case, object-instance can be “empty” (which is different from
“undefined”) if resource-id is not “undefined”.</t>

<!--
[^_TEMPLATE_TODO]

[^_TEMPLATE_TODO]: This text needs some help from an RFC 6570 expert.
 -->

<t>base-uri := Base URI for LWM2M resources or “undefined” for default (empty) base URI</t>

<t>object-id := OMNA (OMA Name Authority) registered object ID (0-65535)</t>

<t>object-instance := Object instance identifier (0-65535) or
“undefined”/”empty” (see above)) to refer to all instances of an object ID</t>

<t>resource-id := OMNA (OMA Name Authority) registered resource ID (0-65535) or “undefined” to refer to all resources within an instance</t>

<t>resource-instance := Resource instance identifier or “undefined” to refer to single instance of a resource</t>

<t>LWM2M IDs are 16 bit unsigned integers represented in decimal (no
leading zeroes except for the value 0) by URI format strings. For
example, a LWM2M URI might be:</t>

<figure><artwork><![CDATA[
/1/0/1
]]></artwork></figure>

<t>The base uri is empty, the Object ID is 1, the instance ID is 0, the
resource ID is 1, and the resource instance is “undefined”. This
example URI points to internal resource 1, which represents the
registration lifetime configured, in instance 0 of a type 1 object
(LWM2M Server Object).</t>

</section>
<section anchor="lwm2m-reg" title="LWM2M Register Endpoint">

<t>LWM2M defines a registration interface based on the REST API, described in <xref target="rd"/>. The
RD registration URI path of the LWM2M Resource Directory is specified to be “/rd”.</t>

<t>LWM2M endpoints register object IDs, for example &lt;/1&gt;, to indicate that a particular object type is supported, and register object instances, for example &lt;/1/0&gt;, to indicate that a particular instance of that object type exists.</t>

<t>Resources within the LWM2M object instance are not registered with the RD, but may be discovered by reading the resource links from the object instance using GET with a CoAP Content-Format of application/link-format. Resources may also be read as a structured object by performing a GET to the object instance with a Content-Format of senml+json.</t>

<t>When an LWM2M object or instance is registered, this indicates to the LWM2M server that the object and its resources are available for management and service enablement (REST API) operations.</t>

<t>LWM2M endpoints may use the following RD registration parameters as defined in <xref target="tab-registry"/> :</t>

<figure><artwork><![CDATA[
ep - Endpoint Name
lt - registration lifetime
]]></artwork></figure>

<t>Endpoint Name, Lifetime, and LWM2M Version are mandatory parameters for the register operation, all other registration parameters are optional.</t>

<t>Additional optional LWM2M registration parameters are defined:</t>

<texttable title="LWM2M Additional Registration Parameters" anchor="tab-lwm2m-registry">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Query</ttcol>
      <ttcol align='left'>Validity</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Binding Mode</c>
      <c>b</c>
      <c>{“U”,UQ”,”S”,”SQ”,”US”,”UQS”}</c>
      <c>Available Protocols</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>LWM2M Version</c>
      <c>ver</c>
      <c>1.0</c>
      <c>Spec Version</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>SMS Number</c>
      <c>sms</c>
      <c>&#160;</c>
      <c>MSISDN</c>
</texttable>

<t>The following RD registration parameters are not currently specified for use in LWM2M:</t>

<figure><artwork><![CDATA[
et - Endpoint Type
base - Registration Base URI
]]></artwork></figure>

<t>The endpoint registration must include a payload containing links to all supported objects and existing object instances, optionally including the appropriate link-format relations.</t>

<t>Here is an example LWM2M registration payload:</t>

<figure><artwork type="linkformat"><![CDATA[
</1>,</1/0>,</3/0>,</5>
]]></artwork></figure>

<t>This link format payload indicates that object ID 1 (LWM2M Server Object) is supported, with a single instance 0 existing, object ID 3 (LWM2M Device object) is supported, with a single instance 0 existing, and object 5 (LWM2M Firmware Object) is supported, with no existing instances.</t>

</section>
<section anchor="lwm2m-regupdate" title="LWM2M Update Endpoint Registration">

<t>The LwM2M update is really very similar to the registration update as described in <xref target="update"/>, with
the only difference that there are more parameters defined and
available. All the parameters listed in that section are also available
with the initial registration but are all optional:</t>

<figure><artwork><![CDATA[
lt - Registration Lifetime
b - Protocol Binding
sms - MSISDN
link payload - new or modified links
]]></artwork></figure>

<t>A Registration update is also specified to be used to update the LWM2M server whenever the endpoint’s UDP port or IP address are changed.</t>

</section>
<section anchor="lwm2m-dereg" title="LWM2M De-Register Endpoint">

<t>LWM2M allows for de-registration using the delete method on the returned location from the initial registration operation. LWM2M de-registration proceeds as described in <xref target="removal"/>.</t>

</section>
</section>
</section>
<section anchor="acknowledgments" title="Acknowledgments">

<t>Oscar Novo, Srdjan Krco, Szymon Sasin, Kerry Lynn, Esko Dijk, Anders
Brandt, Matthieu Vial, Jim Schaad, Mohit Sethi, Hauke Petersen, Hannes Tschofenig, Sampo Ukkola, Linyi
Tian, and Jan Newmarch have provided helpful comments, discussions and ideas to improve and
shape this document. Zach would also like to thank his colleagues from the
EU FP7 SENSEI project, where many of the resource directory concepts were
originally developed.</t>

</section>
<section anchor="changelog" title="Changelog">

<t>changes from -15 to -16</t>

<t><list style="symbols">
  <t>Recommend a common set of resources for members of a group</t>
  <t>Clarified use of multicast group in lighting example</t>
  <t>Add note on concurrent registrations from one EP being possible but not expected</t>
  <t>Refresh web examples appendix to reflect current use of Modernized Link Format</t>
  <t>Add examples of URIs where Modernized Link Format matters</t>
  <t>Editorial changes</t>
</list></t>

<t>changes from -14 to -15</t>

<t><list style="symbols">
  <t>Rewrite of section “Security policies”</t>
  <t>Clarify that the “base” parameter text applies both to relative references
both in anchor and href</t>
  <t>Renamed “Registree-EP” to  Registrant-EP”</t>
  <t>Talk of “relative references” and “URIs” rather than “relative” and
“absolute” URIs. (The concept of “absolute URIs” of <xref target="RFC3986"/> is not needed in RD).</t>
  <t>Fixed examples</t>
  <t>Editorial changes</t>
</list></t>

<t>changes from -13 to -14</t>

<t><list style="symbols">
  <t>Rename “registration context” to “registration base URI” (and “con” to
“base”) and “domain” to “sector” (where the abbreviation “d” stays for
compatibility reasons)</t>
  <t>Introduced resource types core.rd-ep and core.rd-gp</t>
  <t>Registration management moved to appendix A, including endpoint and group lookup</t>
  <t>Minor editorial changes
  <list style="symbols">
      <t>PATCH/iPATCH is clearly deferred to another document</t>
      <t>Recommend against query / fragment identifier in con=</t>
      <t>Interface description lists are described as illustrative</t>
      <t>Rewording of Simple Registration</t>
    </list></t>
  <t>Simple registration carries no error information and succeeds immediately (previously, sequence was unspecified)</t>
  <t>Lookup: href are matched against resolved values (previously, this was unspecified)</t>
  <t>Lookup: lt are not exposed any more</t>
  <t>con/base: Paths are allowed</t>
  <t>Registration resource locations can not have query or fragment parts</t>
  <t>Default life time extended to 25 hours</t>
  <t>clarified registration update rules</t>
  <t>lt-value semantics for lookup clarified.</t>
  <t>added template for simple registration</t>
</list></t>

<t>changes from -12 to -13</t>

<t><list style="symbols">
  <t>Added “all resource directory” nodes MC address</t>
  <t>Clarified observation behavior</t>
  <t>version identification</t>
  <t>example rt= and et= values</t>
  <t>domain from figure 2</t>
  <t>more explanatory text</t>
  <t>endpoints of a groups hosted by different RD</t>
  <t>resolve RFC6690-vs-8288 resolution ambiguities:
  <list style="symbols">
      <t>require registered links not to be relative when using anchor</t>
      <t>return absolute URIs in resource lookup</t>
    </list></t>
</list></t>

<t>changes from -11 to -12</t>

<t><list style="symbols">
  <t>added Content Model section, including ER diagram</t>
  <t>removed domain lookup interface; domains are now plain attributes of groups and endpoints</t>
  <t>updated chapter “Finding a Resource Directory”; now distinguishes configuration-provided, network-provided and heuristic sources</t>
  <t>improved text on: atomicity, idempotency, lookup with multiple parameters, endpoint removal, simple registration</t>
  <t>updated LWM2M description</t>
  <t>clarified where relative references are resolved, and how context and anchor interact</t>
  <t>new appendix on the interaction with RFCs 6690, 5988 and 3986</t>
  <t>lookup interface: group and endpoint lookup return group and registration resources as link targets</t>
  <t>lookup interface: search parameters work the same across all entities</t>
  <t>removed all methods that modify links in an existing registration (POST with payload, PATCH and iPATCH)</t>
  <t>removed plurality definition (was only needed for link modification)</t>
  <t>enhanced IANA registry text</t>
  <t>state that lookup resources can be observable</t>
  <t>More examples and improved text</t>
</list></t>

<t>changes from -09 to -10</t>

<t><list style="symbols">
  <t>removed “ins” and “exp” link-format extensions.</t>
  <t>removed all text concerning DNS-SD.</t>
  <t>removed inconsistency in RDAO text.</t>
  <t>suggestions taken over from various sources</t>
  <t>replaced “Function Set” with “REST API”, “base URI”, “base path”</t>
  <t>moved simple registration to registration section</t>
</list></t>

<t>changes from -08 to -09</t>

<t><list style="symbols">
  <t>clarified the “example use” of the base RD resource values /rd, /rd-lookup, and /rd-group.</t>
  <t>changed “ins” ABNF notation.</t>
  <t>various editorial improvements, including in examples</t>
  <t>clarifications for RDAO</t>
</list></t>

<t>changes from -07 to -08</t>

<t><list style="symbols">
  <t>removed link target value returned from domain and group lookup types</t>
  <t>Maximum length of domain parameter 63 bytes for consistency with group</t>
  <t>removed option for simple POST of link data, don’t require a .well-known/core resource to accept POST data and handle it in a special way; we already have /rd for that</t>
  <t>add IPv6 ND Option for discovery of an RD</t>
  <t>clarify group configuration section 6.1 that endpoints must be registered before including them in a group</t>
  <t>removed all superfluous client-server diagrams</t>
  <t>simplified lighting example</t>
  <t>introduced Commissioning Tool</t>
  <t>RD-Look-up text is extended.</t>
</list></t>

<t>changes from -06 to -07</t>

<t><list style="symbols">
  <t>added text in the discovery section to allow content format hints to be exposed in the discovery link attributes</t>
  <t>editorial updates to section 9</t>
  <t>update author information</t>
  <t>minor text corrections</t>
</list></t>

<t>Changes from -05 to -06</t>

<t><list style="symbols">
  <t>added note that the PATCH section is contingent on the progress of
the PATCH method</t>
</list></t>

<t>changes from -04 to -05</t>

<t><list style="symbols">
  <t>added Update Endpoint Links using PATCH</t>
  <t>http access made explicit in interface specification</t>
  <t>Added http examples</t>
</list></t>

<t>Changes from -03 to -04:</t>

<t><list style="symbols">
  <t>Added http response codes</t>
  <t>Clarified endpoint name usage</t>
  <t>Add application/link-format+cbor content-format</t>
</list></t>

<t>Changes from -02 to -03:</t>

<t><list style="symbols">
  <t>Added an example for lighting and DNS integration</t>
  <t>Added an example for RD use in OMA LWM2M</t>
  <t>Added Read Links operation for link inspection by endpoints</t>
  <t>Expanded DNS-SD section</t>
  <t>Added draft authors Peter van der Stok and Michael Koster</t>
</list></t>

<t>Changes from -01 to -02:</t>

<t><list style="symbols">
  <t>Added a catalogue use case.</t>
  <t>Changed the registration update to a POST with optional link format payload. Removed the endpoint type update from the update.</t>
  <t>Additional examples section added for more complex use cases.</t>
  <t>New DNS-SD mapping section.</t>
  <t>Added text on endpoint identification and authentication.</t>
  <t>Error code 4.04 added to Registration Update and Delete requests.</t>
  <t>Made 63 bytes a SHOULD rather than a MUST for endpoint name and resource type parameters.</t>
</list></t>

<t>Changes from -00 to -01:</t>

<t><list style="symbols">
  <t>Removed the ETag validation feature.</t>
  <t>Place holder for the DNS-SD mapping section.</t>
  <t>Explicitly disabled GET or POST on returned Location.</t>
  <t>New registry for RD parameters.</t>
  <t>Added support for the JSON Link Format.</t>
  <t>Added reference to the Groupcomm WG draft.</t>
</list></t>

<t>Changes from -05 to WG Document -00:</t>

<t><list style="symbols">
  <t>Updated the version and date.</t>
</list></t>

<t>Changes from -04 to -05:</t>

<t><list style="symbols">
  <t>Restricted Update to parameter updates.</t>
  <t>Added pagination support for the Lookup interface.</t>
  <t>Minor editing, bug fixes and reference updates.</t>
  <t>Added group support.</t>
  <t>Changed rt to et for the registration and update interface.</t>
</list></t>

<t>Changes from -03 to -04:</t>

<t><list style="symbols">
  <t>Added the ins= parameter back for the DNS-SD mapping.</t>
  <t>Integrated the Simple Directory Discovery from Carsten.</t>
  <t>Editorial improvements.</t>
  <t>Fixed the use of ETags.</t>
  <t>Fixed tickets 383 and 372</t>
</list></t>

<t>Changes from -02 to -03:</t>

<t><list style="symbols">
  <t>Changed the endpoint name back to a single registration parameter ep= and removed the h= and ins= parameters.</t>
  <t>Updated REST interface descriptions to use RFC6570 URI Template format.</t>
  <t>Introduced an improved RD Lookup design as its own function set.</t>
  <t>Improved the security considerations section.</t>
  <t>Made the POST registration interface idempotent by requiring the ep= parameter to be present.</t>
</list></t>

<t>Changes from -01 to -02:</t>

<t><list style="symbols">
  <t>Added a terminology section.</t>
  <t>Changed the inclusion of an ETag in registration or update to a MAY.</t>
  <t>Added the concept of an RD Domain and a registration parameter for it.</t>
  <t>Recommended the Location returned from a registration to be stable, allowing for endpoint and Domain information to be changed during updates.</t>
  <t>Changed the lookup interface to accept endpoint and Domain as query string parameters to control the scope of a lookup.</t>
</list></t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC6690" target='https://www.rfc-editor.org/info/rfc6690'>
<front>
<title>Constrained RESTful Environments (CoRE) Link Format</title>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby'><organization /></author>
<date year='2012' month='August' />
<abstract><t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links.  Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type.  &quot;RESTful&quot; refers to the Representational State Transfer (REST) architecture.  A well-known URI is defined as a default entry point for requesting the links hosted by a server.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6690'/>
<seriesInfo name='DOI' value='10.17487/RFC6690'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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="RFC3986" target='https://www.rfc-editor.org/info/rfc3986'>
<front>
<title>Uniform Resource Identifier (URI): Generic Syntax</title>
<author initials='T.' surname='Berners-Lee' fullname='T. Berners-Lee'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='L.' surname='Masinter' fullname='L. Masinter'><organization /></author>
<date year='2005' month='January' />
<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="RFC8126" target='https://www.rfc-editor.org/info/rfc8126'>
<front>
<title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
<author initials='M.' surname='Cotton' fullname='M. Cotton'><organization /></author>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<author initials='T.' surname='Narten' fullname='T. Narten'><organization /></author>
<date year='2017' month='June' />
<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>



<reference  anchor="RFC5988" target='https://www.rfc-editor.org/info/rfc5988'>
<front>
<title>Web Linking</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2010' month='October' />
<abstract><t>This document specifies relation types for Web links, and defines a registry for them.  It also defines the use of such links in HTTP headers with the Link header field.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5988'/>
<seriesInfo name='DOI' value='10.17487/RFC5988'/>
</reference>



<reference  anchor="RFC6570" target='https://www.rfc-editor.org/info/rfc6570'>
<front>
<title>URI Template</title>
<author initials='J.' surname='Gregorio' fullname='J. Gregorio'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='M.' surname='Hadley' fullname='M. Hadley'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='D.' surname='Orchard' fullname='D. Orchard'><organization /></author>
<date year='2012' month='March' />
<abstract><t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6570'/>
<seriesInfo name='DOI' value='10.17487/RFC6570'/>
</reference>



<reference  anchor="RFC6763" target='https://www.rfc-editor.org/info/rfc6763'>
<front>
<title>DNS-Based Service Discovery</title>
<author initials='S.' surname='Cheshire' fullname='S. Cheshire'><organization /></author>
<author initials='M.' surname='Krochmal' fullname='M. Krochmal'><organization /></author>
<date year='2013' month='February' />
<abstract><t>This document specifies how DNS resource records are named and structured to facilitate service discovery.  Given a type of service that a client is looking for, and a domain in which the client is looking for that service, this mechanism allows clients to discover a list of named instances of that desired service, using standard DNS queries. This mechanism is referred to as DNS-based Service Discovery, or DNS-SD.</t></abstract>
</front>
<seriesInfo name='RFC' value='6763'/>
<seriesInfo name='DOI' value='10.17487/RFC6763'/>
</reference>



<reference anchor="I-D.ietf-core-links-json">
<front>
<title>Representing Constrained RESTful Environments (CoRE) Link Format in JSON and CBOR</title>

<author initials='K' surname='Li' fullname='Kepeng Li'>
    <organization />
</author>

<author initials='A' surname='Rahman' fullname='Akbar Rahman'>
    <organization />
</author>

<author initials='C' surname='Bormann' fullname='Carsten Bormann'>
    <organization />
</author>

<date month='February' day='26' year='2018' />

<abstract><t>JavaScript Object Notation, JSON (RFC 8259) is a text-based data format which is popular for Web based data exchange.  Concise Binary Object Representation, CBOR (RFC7049) is a binary data format which has been optimized for data exchange for the Internet of Things (IoT).  For many IoT scenarios, CBOR formats will be preferred since it can help decrease transmission payload sizes as well as implementation code sizes compared to other data formats.  Web Linking (RFC 8288) provides a way to represent links between Web resources as well as the relations expressed by them and attributes of such a link.  In constrained networks, a collection of Web links can be exchanged in the CoRE link format (RFC 6690).  Outside of constrained environments, it may be useful to represent these collections of Web links in JSON, and similarly, inside constrained environments, in CBOR.  This specification defines a common format for this.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-core-links-json-10' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-links-json-10.txt' />
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC7252" target='https://www.rfc-editor.org/info/rfc7252'>
<front>
<title>The Constrained Application Protocol (CoAP)</title>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby'><organization /></author>
<author initials='K.' surname='Hartke' fullname='K. Hartke'><organization /></author>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></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>
<seriesInfo name='RFC' value='7252'/>
<seriesInfo name='DOI' value='10.17487/RFC7252'/>
</reference>



<reference  anchor="RFC7390" target='https://www.rfc-editor.org/info/rfc7390'>
<front>
<title>Group Communication for the Constrained Application Protocol (CoAP)</title>
<author initials='A.' surname='Rahman' fullname='A. Rahman' role='editor'><organization /></author>
<author initials='E.' surname='Dijk' fullname='E. Dijk' role='editor'><organization /></author>
<date year='2014' month='October' />
<abstract><t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for constrained devices and constrained networks. It is anticipated that constrained devices will often naturally operate in groups (e.g., in a building automation scenario, all lights in a given room may need to be switched on/off as a group). This specification defines how CoAP should be used in a group communication context.  An approach for using CoAP on top of IP multicast is detailed based on existing CoAP functionality as well as new features introduced in this specification.  Also, various use cases and corresponding protocol flows are provided to illustrate important concepts.  Finally, guidance is provided for deployment in various network topologies.</t></abstract>
</front>
<seriesInfo name='RFC' value='7390'/>
<seriesInfo name='DOI' value='10.17487/RFC7390'/>
</reference>



<reference  anchor="RFC6775" target='https://www.rfc-editor.org/info/rfc6775'>
<front>
<title>Neighbor Discovery Optimization for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)</title>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby' role='editor'><organization /></author>
<author initials='S.' surname='Chakrabarti' fullname='S. Chakrabarti'><organization /></author>
<author initials='E.' surname='Nordmark' fullname='E. Nordmark'><organization /></author>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<date year='2012' month='November' />
<abstract><t>The IETF work in IPv6 over Low-power Wireless Personal Area Network (6LoWPAN) defines 6LoWPANs such as IEEE 802.15.4.  This and other similar link technologies have limited or no usage of multicast signaling due to energy conservation.  In addition, the wireless network may not strictly follow the traditional concept of IP subnets and IP links.  IPv6 Neighbor Discovery was not designed for non- transitive wireless links, as its reliance on the traditional IPv6 link concept and its heavy use of multicast make it inefficient and sometimes impractical in a low-power and lossy network.  This document describes simple optimizations to IPv6 Neighbor Discovery, its addressing mechanisms, and duplicate address detection for Low- power Wireless Personal Area Networks and similar networks.  The document thus updates RFC 4944 to specify the use of the optimizations defined here.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6775'/>
<seriesInfo name='DOI' value='10.17487/RFC6775'/>
</reference>



<reference  anchor="RFC7230" target='https://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></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 &quot;http&quot; and &quot;https&quot; 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>
<seriesInfo name='RFC' value='7230'/>
<seriesInfo name='DOI' value='10.17487/RFC7230'/>
</reference>



<reference  anchor="RFC8132" target='https://www.rfc-editor.org/info/rfc8132'>
<front>
<title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
<author initials='P.' surname='van der Stok' fullname='P. van der Stok'><organization /></author>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<author initials='A.' surname='Sehgal' fullname='A. Sehgal'><organization /></author>
<date year='2017' month='April' />
<abstract><t>The methods defined in RFC 7252 for the Constrained Application Protocol (CoAP) only allow access to a complete resource, not to parts of a resource.  In case of resources with larger or complex data, or in situations where resource continuity is required, replacing or requesting the whole resource is undesirable.  Several applications using CoAP need to access parts of the resources.</t><t>This specification defines the new CoAP methods, FETCH, PATCH, and iPATCH, which are used to access and update parts of a resource.</t></abstract>
</front>
<seriesInfo name='RFC' value='8132'/>
<seriesInfo name='DOI' value='10.17487/RFC8132'/>
</reference>



<reference  anchor="RFC7641" target='https://www.rfc-editor.org/info/rfc7641'>
<front>
<title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
<author initials='K.' surname='Hartke' fullname='K. Hartke'><organization /></author>
<date year='2015' month='September' />
<abstract><t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks.  The state of a resource on a CoAP server can change over time.  This document specifies a simple protocol extension for CoAP that enables CoAP clients to &quot;observe&quot; resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time.  The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t></abstract>
</front>
<seriesInfo name='RFC' value='7641'/>
<seriesInfo name='DOI' value='10.17487/RFC7641'/>
</reference>

<reference anchor="ER" >
  <front>
    <title>The entity-relationship model---toward a unified view of data</title>
    <author initials="P." surname="Chen" fullname="Peter Pin-Shan Chen">
      <organization></organization>
    </author>
    <date year="1976" month="March"/>
  </front>
  <seriesInfo name="ACM Transactions on Database Systems" value="Vol. 1, pp. 9-36"/>
  <seriesInfo name="DOI" value="10.1145/320434.320440"/>
</reference>



<reference  anchor="RFC8288" target='https://www.rfc-editor.org/info/rfc8288'>
<front>
<title>Web Linking</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2017' month='October' />
<abstract><t>This specification defines a model for the relationships between resources on the Web (&quot;links&quot;) and the type of those relationships (&quot;link relation types&quot;).</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="RFC8392" target='https://www.rfc-editor.org/info/rfc8392'>
<front>
<title>CBOR Web Token (CWT)</title>
<author initials='M.' surname='Jones' fullname='M. Jones'><organization /></author>
<author initials='E.' surname='Wahlstroem' fullname='E. Wahlstroem'><organization /></author>
<author initials='S.' surname='Erdtman' fullname='S. Erdtman'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<date year='2018' month='May' />
<abstract><t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t></abstract>
</front>
<seriesInfo name='RFC' value='8392'/>
<seriesInfo name='DOI' value='10.17487/RFC8392'/>
</reference>



<reference anchor="I-D.silverajan-core-coap-protocol-negotiation">
<front>
<title>CoAP Protocol Negotiation</title>

<author initials='B' surname='Silverajan' fullname='Bill Silverajan'>
    <organization />
</author>

<author initials='M' surname='Ocak' fullname='Mert Ocak'>
    <organization />
</author>

<date month='July' day='2' year='2018' />

<abstract><t>CoAP has been standardised as an application-level REST-based protocol.  When multiple transport protocols exist for exchanging CoAP resource representations, this document introduces a way forward for CoAP endpoints as well as intermediaries to agree upon alternate transport and protocol configurations as well as URIs for CoAP messaging.  Several mechanisms are proposed: Extending the CoRE Resource Directory with new parameter types, introducing a new CoAP Option with which clients can interact directly with servers without needing the Resource Directory, and finally a new CoRE Link Attribute allowing exposing alternate locations on a per-resource basis.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-silverajan-core-coap-protocol-negotiation-09' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-silverajan-core-coap-protocol-negotiation-09.txt' />
</reference>



<reference anchor="I-D.arkko-core-dev-urn">
<front>
<title>Uniform Resource Names for Device Identifiers</title>

<author initials='J' surname='Arkko' fullname='Jari Arkko'>
    <organization />
</author>

<author initials='C' surname='Jennings' fullname='Cullen Jennings'>
    <organization />
</author>

<author initials='Z' surname='Shelby' fullname='Zach Shelby'>
    <organization />
</author>

<date month='October' day='30' year='2017' />

<abstract><t>This memo describes a new Uniform Resource Name (URN) namespace for hardware device identifiers.  A general representation of device identity can be useful in many applications, such as in sensor data streams and storage, or equipment inventories.  A URN-based representation can be easily passed along in any application that needs the information.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-arkko-core-dev-urn-05' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-arkko-core-dev-urn-05.txt' />
</reference>



<reference anchor="I-D.ietf-ace-oauth-authz">
<front>
<title>Authentication and Authorization for Constrained Environments (ACE) using the OAuth 2.0 Framework (ACE-OAuth)</title>

<author initials='L' surname='Seitz' fullname='Ludwig Seitz'>
    <organization />
</author>

<author initials='G' surname='Selander' fullname='Goeran Selander'>
    <organization />
</author>

<author initials='E' surname='Wahlstroem' fullname='Erik Wahlstroem'>
    <organization />
</author>

<author initials='S' surname='Erdtman' fullname='Samuel Erdtman'>
    <organization />
</author>

<author initials='H' surname='Tschofenig' fullname='Hannes Tschofenig'>
    <organization />
</author>

<date month='October' day='2' year='2018' />

<abstract><t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE- OAuth.  The framework is based on a set of building blocks including OAuth 2.0 and CoAP, thus making a well-known and widely used authorization solution suitable for IoT devices.  Existing specifications are used where possible, but where the constraints of IoT devices require it, extensions are added and profiles are defined.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-ace-oauth-authz-16' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ace-oauth-authz-16.txt' />
</reference>



<reference anchor="I-D.ietf-anima-bootstrapping-keyinfra">
<front>
<title>Bootstrapping Remote Secure Key Infrastructures (BRSKI)</title>

<author initials='M' surname='Pritikin' fullname='Max Pritikin'>
    <organization />
</author>

<author initials='M' surname='Richardson' fullname='Michael Richardson'>
    <organization />
</author>

<author initials='M' surname='Behringer' fullname='Michael Behringer'>
    <organization />
</author>

<author initials='S' surname='Bjarnason' fullname='Steinthor Bjarnason'>
    <organization />
</author>

<author initials='K' surname='Watsen' fullname='Kent Watsen'>
    <organization />
</author>

<date month='June' day='22' year='2018' />

<abstract><t>This document specifies automated bootstrapping of a remote secure key infrastructure (BRSKI) using manufacturer installed X.509 certificate, in combination with a manufacturer's authorizing service, both online and offline.  Bootstrapping a new device can occur using a routable address and a cloud service, or using only link-local connectivity, or on limited/disconnected networks. Support for lower security models, including devices with minimal identity, is described for legacy reasons but not encouraged. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device but the established secure connection can be used to deploy a locally issued certificate to the device as well.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-anima-bootstrapping-keyinfra-16' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-anima-bootstrapping-keyinfra-16.txt' />
</reference>



<reference  anchor="RFC2616" target='https://www.rfc-editor.org/info/rfc2616'>
<front>
<title>Hypertext Transfer Protocol -- HTTP/1.1</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='J.' surname='Gettys' fullname='J. Gettys'><organization /></author>
<author initials='J.' surname='Mogul' fullname='J. Mogul'><organization /></author>
<author initials='H.' surname='Frystyk' fullname='H. Frystyk'><organization /></author>
<author initials='L.' surname='Masinter' fullname='L. Masinter'><organization /></author>
<author initials='P.' surname='Leach' fullname='P. Leach'><organization /></author>
<author initials='T.' surname='Berners-Lee' fullname='T. Berners-Lee'><organization /></author>
<date year='1999' month='June' />
<abstract><t>HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as &quot;HTTP/1.1&quot;, and is an update to RFC 2068.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2616'/>
<seriesInfo name='DOI' value='10.17487/RFC2616'/>
</reference>



<reference anchor="I-D.bormann-t2trg-rel-impl">
<front>
<title>impl-info: A link relation type for disclosing implementation information</title>

<author initials='C' surname='Bormann' fullname='Carsten Bormann'>
    <organization />
</author>

<date month='January' day='28' year='2018' />

<abstract><t>When debugging an interoperability problem, it is often helpful to have information about the implementation version of a peer.  To enable the disclosure of such information, HTTP defines header fields such as Server and User-Agent.  In CoAP, it is rarely appropriate to send information of this kind in every request or response.  Instead, the present specification defines a link relation type, impl-info, that can be used to convey this information via the self-description capabilities of the /.well- known/core resource and the CoRE resource directory.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-bormann-t2trg-rel-impl-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-bormann-t2trg-rel-impl-00.txt' />
</reference>




    </references>


<section anchor="registration-mgmt" title="Registration Management">

<t>This section describes how the registering endpoint can maintain the registries that it created. The registering endpoint can be the registrant-ep or the CT. An endpoint SHOULD NOT use this interface for registries that it did not create. The registries are resources of the RD.</t>

<t>After the initial registration, the registering endpoint retains the returned location of the Registration Resource for further operations, including refreshing the registration in order to extend the lifetime and “keep-alive” the registration. When the lifetime of the registration has expired, the RD SHOULD NOT respond to discovery queries concerning this endpoint. The RD SHOULD continue to provide access to the Registration Resource after a registration time-out occurs in order to enable the registering endpoint to eventually refresh the registration. The RD MAY eventually remove the registration resource for the purpose of garbage collection and remove it from any group it belongs to. If the Registration Resource is removed, the corresponding endpoint will need to be re-registered.</t>

<t>The Registration Resource may also be used to inspect the registration resource using GET, update the registration, cancel the registration using DELETE, do an endpoint lookup, or a group lookup.</t>

<t>These operations are described below.</t>

<section anchor="update" title="Registration Update">

<t>The update interface is used by the registering endpoint to refresh or update its
registration with an RD. To use the interface, the registering endpoint sends a POST request to the registration resource returned by the initial registration operation.</t>

<t>An update MAY update the lifetime- or the context- registration parameters
“lt”, “base” as in <xref target="registration"/>. Parameters that are not being changed SHOULD NOT
be included in an update. Adding parameters that have not changed increases
the size of the message but does not have any other implications.
Parameters MUST be included as query parameters in an update operation as
in <xref target="registration"/>.</t>

<t>A registration update resets the timeout of the registration to the (possibly
updated) lifetime of the registration, independent of whether a <spanx style="verb">lt</spanx> parameter
was given.</t>

<t>If the context of the registration is changed in an update,
relative references submitted in the original registration or later updates are resolved anew against the new context.</t>

<t>The registration update operation only describes the use of POST with an empty payload.
Future standards might describe the semantics of using content formats and payloads
with the POST method to update the links of a registration (see <xref target="link-up"/>).</t>

<t>The update registration request interface is specified as follows:</t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  EP -&gt; RD</t>
  <t hangText='Method:'>
  POST</t>
  <t hangText='URI Template:'>
  {+location}{?lt,con,extra-attrs*}</t>
  <t hangText='URI Template Variables:'>
        <list style="hanging">
        <t hangText='location :='>
        This is the Location returned by the RD as a result of a successful
earlier registration.</t>
        <t hangText='lt :='>
        Lifetime (optional). Lifetime of the registration in seconds. Range of 60-4294967295.
If no lifetime is included, the previous last
lifetime set on a previous update or the original registration
(falling back to 90000) SHOULD be used.</t>
        <t hangText='base :='>
        Base URI (optional). This parameter updates the Base URI established in the
original registration to a new value.

If the parameter is set in an update, it is stored by the RD as the new
Base URI under which to interpret the relative links present in the payload of the original registration, following
the same restrictions as in the registration.
If the parameter is not set in the request but was set before, the previous
Base URI value is kept unmodified.
If the parameter is not set in the request and was not set before either, the
source address and source port of the update request are stored as the
Base URI.</t>
        <t hangText='extra-attrs :='>
        Additional registration attributes (optional). As with the registration,
the RD processes them if it knows their semantics. Otherwise, unknown
attributes are stored as endpoint attributes, overriding any previously
stored endpoint attributes of the same key.</t>
      </list>
  </t>
  <t hangText='Content-Format:'>
  none (no payload)</t>
</list></t>

<t>The following response codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.04 “Changed” or 204 “No Content” if the update was successfully processed.</t>
  <t hangText='Failure:'>
  4.00 “Bad Request” or 400 “Bad Request”. Malformed request.</t>
  <t hangText='Failure:'>
  4.04 “Not Found” or 404 “Not Found”. Registration does not exist (e.g. may have expired).</t>
  <t hangText='Failure:'>
  5.03 “Service Unavailable” or 503 “Service Unavailable”. Service could not perform the operation.</t>
  <t hangText='HTTP support:'>
  YES</t>
</list></t>

<t>If the registration update fails with a “Service Unavailable” response
and a Max-Age option or Retry-After header,
the registering endpoint SHOULD retry the operation after the time indicated.
If the registration fails in another way, including request timeouts,
or if the time indicated exceeds the remaining lifetime,
the registering endpoint SHOULD attempt registration again.</t>

<t>The following example shows how the registering endpoint updates its registration resource at
an RD using this interface with the example location value: /rd/4521.</t>

<figure><artwork><![CDATA[
Req: POST /rd/4521

Res: 2.04 Changed
]]></artwork></figure>

<t>The following example shows the registering endpoint updating its registration resource at
an RD using this interface with the example location value: /rd/4521. The initial registration by the registering endpoint set the following values:</t>

<t><list style="symbols">
  <t>endpoint name (ep)=endpoint1</t>
  <t>lifetime (lt)=500</t>
  <t>Base URI (base)=coap://local-proxy-old.example.com:5683</t>
  <t>payload of <xref target="example-payload"/></t>
</list></t>

<t>The initial state of the Resource Directory is reflected in the following request:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/res?ep=endpoint1

Res: 2.01 Content
Payload:
<coap://local-proxy-old.example.com:5683/sensors/temp>;ct=41;
 rt="temperature"; anchor="coap://spurious.example.com:5683",
<coap://local-proxy-old.example.com:5683/sensors/light>;ct=41;
  rt="light-lux"; if="sensor";
  anchor="coap://local-proxy-old.example.com:5683"
]]></artwork></figure>

<t>The following example shows the registering endpoint changing the Base URI to <spanx style="verb">coaps://new.example.com:5684</spanx>:</t>

<figure><artwork><![CDATA[
Req: POST /rd/4521?base=coaps://new.example.com:5684

Res: 2.04 Changed
]]></artwork></figure>

<t>The consecutive query returns:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/res?ep=endpoint1

Res: 2.01 Content
Payload:
<coaps://new.example.com:5684/sensors/temp>;ct=41;rt="temperature";
    anchor="coap://spurious.example.com:5683",
<coaps://new.example.com:5684/sensors/light>;ct=41;rt="light-lux";
    if="sensor"; anchor="coaps://new.example.com:5684",
]]></artwork></figure>

</section>
<section anchor="removal" title="Registration Removal">

<t>Although RD entries have soft state and will eventually timeout after their
lifetime, the registering endpoint SHOULD explicitly remove an entry from the RD if it
knows it will no longer be available (for example on shut-down). This is
accomplished using a removal interface on the RD by performing a DELETE on
the endpoint resource.</t>

<t>Removed registrations are implicitly removed from the groups to which they belong.</t>

<t>The removal request interface is specified as follows:</t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  EP -&gt; RD</t>
  <t hangText='Method:'>
  DELETE</t>
  <t hangText='URI Template:'>
  {+location}</t>
  <t hangText='URI Template Variables:'>
        <list style="hanging">
        <t hangText='location :='>
        This is the Location returned by the RD as a result of a successful
earlier registration.</t>
      </list>
  </t>
</list></t>

<t>The following response codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.02 “Deleted” or 204 “No Content” upon successful deletion</t>
  <t hangText='Failure:'>
  4.00 “Bad Request” or 400 “Bad Request”. Malformed request.</t>
  <t hangText='Failure:'>
  4.04 “Not Found” or 404 “Not Found”. Registration does not exist (e.g. may have expired).</t>
  <t hangText='Failure:'>
  5.03 “Service Unavailable” or 503 “Service Unavailable”. Service could not perform the operation.</t>
</list></t>

<t>HTTP support: YES</t>

<t>The following examples shows successful removal of the endpoint from the RD with example location value /rd/4521.</t>

<figure><artwork><![CDATA[
Req: DELETE /rd/4521

Res: 2.02 Deleted
]]></artwork></figure>

</section>
<section anchor="read" title="Read Endpoint Links">

<t>Some registering endpoints may wish to manage their links as a collection, and may need to read the current set of links stored in the registration resource, in order to determine link maintenance operations.</t>

<t>One or more links MAY be selected by using query filtering as specified in <xref target="RFC6690"/> Section 4.1</t>

<t>If no links are selected, the Resource Directory SHOULD return an empty payload.</t>

<t>The read request interface is specified as follows:</t>

<t><list style="hanging">
  <t hangText='Interaction:'>
  EP -&gt; RD</t>
  <t hangText='Method:'>
  GET</t>
  <t hangText='URI Template:'>
  {+location}{?href,rel,rt,if,ct}</t>
  <t hangText='URI Template Variables:'>
        <list style="hanging">
        <t hangText='location :='>
        This is the Location returned by the RD as a result of a successful
earlier registration.</t>
      </list>
  </t>
  <t>href,rel,rt,if,ct := link relations and attributes specified in the query in order to select particular links based on their relations and attributes. “href” denotes the URI target of the link. See <xref target="RFC6690"/> Sec. 4.1</t>
</list></t>

<t>The following response codes are defined for this interface:</t>

<t><list style="hanging">
  <t hangText='Success:'>
  2.05 “Content” or 200 “OK” upon success with an <spanx style="verb">application/link-format</spanx>, <spanx style="verb">application/link-format+cbor</spanx>, or <spanx style="verb">application/link-format+json</spanx> payload.</t>
  <t hangText='Failure:'>
  4.00 “Bad Request” or 400 “Bad Request”. Malformed request.</t>
  <t hangText='Failure:'>
  4.04 “Not Found” or 404 “Not Found”. Registration does not exist (e.g. may have expired).</t>
  <t hangText='Failure:'>
  5.03 “Service Unavailable” or 503 “Service Unavailable”. Service could not perform the operation.</t>
</list></t>

<t>HTTP support: YES</t>

<t>The following examples show successful read of the endpoint links from the RD, with example location value /rd/4521 and example registration payload of <xref target="example-payload"/>.</t>

<figure><artwork><![CDATA[
Req: GET /rd/4521

Res: 2.01 Content
Payload:
</sensors/temp>;ct=41;rt="temperature-c";if="sensor";
anchor="coap://spurious.example.com:5683",
</sensors/light>;ct=41;rt="light-lux";if="sensor"
]]></artwork></figure>

</section>
<section anchor="link-up" title="Update Endpoint Links">

<t>An iPATCH (or PATCH) update (<xref target="RFC8132"/>) can add, remove or change the links of a registration.</t>

<t>Those operations are out of scope of this document, and will require media types suitable for modifying sets of links.</t>

</section>
<section anchor="ep-gp-lookup" title="Endpoint and group lookup">

<t>Endpoint and group lookups result in links to registration resources and group resources, respectively.
Endpoint registration resources are annotated with their endpoint names (ep), sectors (d, if present) and registration base URI (base) as well as a constant resource type (rt=”core.rd-ep”); the lifetime (lt) is not reported.
Additional endpoint attributes are added as link attributes to their endpoint link unless their specification says otherwise.</t>

<t>Group resources are annotated with their group names (gp), sector (d, if present) and multicast address (base, if present) as well as a constant resource type (rt=”core.rd-gp”).</t>

<t>Serializations derived from Link Format, SHOULD present links to groups and endpoints in path-absolute form or, if required, as absolute references. (This approach avoids the RFC6690 ambiguities.)</t>

<t>While Endpoint Lookup does expose the registration resources,
the RD does not need to make them accessible to clients.
Clients SHOULD NOT attempt to dereference or manipulate them.</t>

<t>A Resource Directory can report endpoints or groups in lookup that are not hosted at the same address.
Lookup clients MUST be prepared to see arbitrary URIs as registration or group resources in the results
and treat them as opaque identifiers;
the precise semantics of such links are left to future specifications.</t>

<t>For groups, a Resource Directory as specified here
does not provide a lookup mechanism for the resources that can be accessed on a group’s multicast address
(i.e. no lookup will return links like <spanx style="verb">&lt;coap://[ff35:30:2001:db8::1]/light&gt;;...</spanx> for a group registered with <spanx style="verb">base=coap://[ff35...]</spanx>).
Such an additional lookup interface could be specified in an extension document.</t>

<t>The following example shows a client performing an endpoint type (et) lookup with  the value oic.d.sensor (which is currently a registered rt value):</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/ep?et=oic.d.sensor

Res: 2.05 Content
</rd/1234>;base="coap://[2001:db8:3::127]:61616";ep="node5";
et="oic.d.sensor";ct="40",
</rd/4521>;base="coap://[2001:db8:3::129]:61616";ep="node7";
et="oic.d.sensor";ct="40";d="floor-3"
]]></artwork></figure>

<t>The following example shows a client performing a group lookup for all groups:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/gp

Res: 2.05 Content
</rd-group/1>;gp="lights1";d="example.com";
       base="coap://[ff35:30:2001:db8::1]",
</rd-group/2>;gp="lights2";d="example.com";
       base="coap://[ff35:30:2001:db8::2]"
]]></artwork></figure>

<t>The following example shows a client performing a lookup for all groups the
endpoint “node1” belongs to:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/gp?ep=node1

Res: 2.05 Content
</rd-group/1>;gp="lights1"
]]></artwork></figure>

</section>
</section>
<section anchor="weblink" title="Web links and the Resource Directory">

<t>Understanding the semantics of a link-format document and its URI references is
a journey through different documents (<xref target="RFC3986"/> defining URIs, <xref target="RFC6690"/>
defining link-format documents based on <xref target="RFC8288"/> which defines link headers,
and <xref target="RFC7252"/> providing the transport). This appendix summarizes
the mechanisms and semantics at play from an entry in <spanx style="verb">.well-known/core</spanx> to a
resource lookup.</t>

<t>This text is primarily aimed at people entering the field of Constrained
Restful Environments from applications that previously did not use web
mechanisms.</t>

<t>At all examples in this section give compatible results for both
Modernized and RFC6690 Link Format;
the explanation of the steps follow Modernized Link Format.</t>

<section anchor="a-simple-example" title="A simple example">

<t>Let’s start this example with a very simple host, <spanx style="verb">2001:db8:f0::1</spanx>. A client
that follows classical CoAP Discovery (<xref target="RFC7252"/> Section 7), sends the
following multicast request to learn about neighbours supporting resources with
resource-type “temperature”.</t>

<t>The client sends a link-local multicast:</t>

<figure><artwork><![CDATA[
GET coap://[ff02::fd]:5683/.well-known/core?rt=temperature

RES 2.05 Content
</temp>;rt=temperature;ct=0
]]></artwork></figure>

<t>where the response is sent by the server, <spanx style="verb">[2001:db8:f0::1]:5683</spanx>.</t>

<t>While the client – on the practical or implementation side – can just go
ahead and create a new request to <spanx style="verb">[2001:db8:f0::1]:5683</spanx> with Uri-Path:
<spanx style="verb">temp</spanx>, the full resolution steps for insertion into and retrieval from the RD without any shortcuts are:</t>

<section anchor="resolveURI" title="Resolving the URIs">

<t>The client parses the single returned record. The link’s target (sometimes
called “href”) is “<spanx style="verb">/temp</spanx>”, which is a relative URI that needs resolving.
The base
URI &lt;coap://[ff02::fd]:5683/.well-known/core&gt; is used to resolve the
reference /temp against.</t>

<t>The Base URI of the requested resource can be composed from the header options of the CoAP GET request by following the steps of
<xref target="RFC7252"/> section 6.5 (with an addition at the end of 8.2) into
“<spanx style="verb">coap://[2001:db8:f0::1]/.well-known/core</spanx>”.</t>

<t>Because “<spanx style="verb">/temp</spanx>” starts with a single slash,
the record’s target is resolved by replacing the path “<spanx style="verb">/.well-known/core</spanx>”
from the Base URI (section 5.2 <xref target="RFC3986"/>) with the relative target URI “<spanx style="verb">/temp</spanx>” into
“<spanx style="verb">coap://[2001:db8:f0::1]/temp</spanx>”.</t>

</section>
<section anchor="interpreting-attributes-and-relations" title="Interpreting attributes and relations">

<t>Some more information but the record’s target can be obtained from the payload:
the resource type of the target is “temperature”, and its content type is
text/plain (ct=0).</t>

<t>A relation in a web link is a three-part statement that specifies a named relation between the so-called “context resource”
and the target resource, like “<spanx style="emph">This page</spanx> has <spanx style="emph">its table
of contents</spanx> at <spanx style="emph">/toc.html</spanx>”. In <xref target="RFC6690"/> and modernized link-format documents,
there is an implicit “host relation” specified with default parameter: rel=”hosts”.</t>

<t>In our example, the context resource of the link is the URI specified in the GET request “coap:://[2001:db8:f0::1]/.well-known/core”. A full English expression of the “host relation” is:</t>

<t>‘<spanx style="verb">coap://[2001:db8:f0::1]/.well-known/core</spanx> is hosting the resource
<spanx style="verb">coap://[2001:db8:f0::1]/temp</spanx>, which is of the resource type “temperature” and
can be accessed using the text/plain content format.’</t>

</section>
</section>
<section anchor="a-slightly-more-complex-example" title="A slightly more complex example">

<t>Omitting the <spanx style="verb">rt=temperature</spanx> filter, the discovery query would
have given some more records in the payload:</t>

<figure><artwork><![CDATA[
GET coap://[ff02::fd]:5683/.well-known/core

RES 2.05 Content
</temp>;rt=temperature;ct=0,
</light>;rt=light-lux;ct=0,
</t>;anchor="/sensors/temp";rel=alternate,
<http://www.example.com/sensors/t123>;anchor="/sensors/temp";
    rel="describedby"
]]></artwork></figure>

<t>Parsing the third record, the client encounters the “anchor” parameter. It is
a URI relative to the Base URI of the request and is thus resolved to
“<spanx style="verb">coap://[2001:db8:f0::1]/sensors/temp</spanx>”.
That is the context resource of the link, so the “rel” statement is not about
the target and the Base URI any more, but about the target and the resolved
URI. Thus, the third record could be read as
“<spanx style="verb">coap://[2001:db8:f0::1]/sensors/temp</spanx> has an alternate representation at
<spanx style="verb">coap://[2001:db8:f0::1]/t</spanx>”.</t>

<t>Following the same resolution steps, the fourth record can be read as “<spanx style="verb">coap://[2001:db8:f0::1]/sensors/temp</spanx> is
described by <spanx style="verb">http://www.example.com/sensors/t123</spanx>”.</t>

</section>
<section anchor="enter-the-resource-directory" title="Enter the Resource Directory">

<t>The resource directory tries to carry the semantics obtainable by classical
CoAP discovery over to the resource lookup interface as faithfully as possible.</t>

<t>For the following queries, we will assume that the simple host has used Simple
Registration to register at the resource directory that was announced to it,
sending this request from its UDP port <spanx style="verb">[2001:db8:f0::1]:6553</spanx>:</t>

<figure><artwork><![CDATA[
POST coap://[2001:db8:f01::ff]/.well-known/core?ep=simple-host1
]]></artwork></figure>

<t>The resource directory would have accepted the registration, and queried the
simple host’s <spanx style="verb">.well-known/core</spanx> by itself. As a result, the host is registered
as an endpoint in the RD with the name “simple-host1”. The registration is
active for 90000 seconds, and the endpoint registration Base URI is
“<spanx style="verb">coap://[2001:db8:f0::1]</spanx>” following the resolution steps described in <xref target="resolveURI"/>. It should be remarked that the Base URI constructed that way always yields a URI of the form: scheme://authority without path suffix.</t>

<t>If the client now queries the RD as it would previously have issued a multicast
request, it would go through the RD discovery steps by fetching
<spanx style="verb">coap://[2001:db8:f0::ff]/.well-known/core?rt=core.rd-lookup-res</spanx>, obtain
<spanx style="verb">coap://[2001:db8:f0::ff]/rd-lookup/res</spanx> as the resource lookup endpoint, and
issue a request to <spanx style="verb">coap://[2001:db8:f0::ff]/rd-lookup/res?rt=temperature</spanx> to
receive the following data:</t>

<figure><artwork><![CDATA[
<coap://[2001:db8:f0::1]/temp>;rt=temperature;ct=0;
    anchor="coap://[2001:db8:f0::1]"
]]></artwork></figure>

<t>This is not <spanx style="emph">literally</spanx> the same response that it would have received from a
multicast request, but it contains the equivalent statement:</t>

<t>‘<spanx style="verb">coap://[2001:db8:f0::1]</spanx> is hosting the resource
<spanx style="verb">coap://[2001:db8:f0::1]/temp</spanx>, which is of the resource type “temperature” and
can be accessed using the text/plain content format.’</t>

<t>(The difference is whether <spanx style="verb">/</spanx> or <spanx style="verb">/.well-known/core</spanx> hosts the resources,
which is one of the often misunderstood subtleties Modernized Link Format addresses. Actually, /.well-known/core does NOT host the resource but stores a URI reference to the resource.)</t>

<t>To complete the examples, the client could also query all resources hosted at
the endpoint with the known endpoint name “simple-host1”. A request to
<spanx style="verb">coap://[2001:db8:f0::ff]/rd-lookup/res?ep=simple-host1</spanx> would return</t>

<figure><artwork><![CDATA[
<coap://[2001:db8:f0::1]/temp>;rt=temperature;ct=0;
    anchor="coap://[2001:db8:f0::1]",
<coap://[2001:db8:f0::1]/light>;rt=light-lux;ct=0;
    anchor="coap://[2001:db8:f0::1]",
<coap://[2001:db8:f0::1]/t>;
    anchor="coap://[2001:db8:f0::1]/sensors/temp";rel=alternate,
<http://www.example.com/sensors/t123>;
    anchor="coap://[2001:db8:f0::1]/sensors/temp";rel="describedby"
]]></artwork></figure>

<t>All the target and anchor references are already in absolute form there, which
don’t need to be resolved any further.</t>

<t>Had the simple host done an equivalent full registration with a base= parameter (e.g.
<spanx style="verb">?ep=simple-host1&amp;base=coap+tcp://simple-host1.example.com</spanx>), that context would
have been used to resolve the relative anchor values instead, giving</t>

<figure><artwork><![CDATA[
<coap+tcp://simple-host1.example.com/temp>;rt=temperature;ct=0;
    anchor="coap+tcp://simple-host1.example.com"
]]></artwork></figure>

<t>and analogous records.</t>

</section>
<section anchor="resolution-rules" title="A note on differences between link-format and Link headers">

<t>While link-format and Link headers look very similar and are based on the same
model of typed links, there are some differences between <xref target="RFC6690"/> and
<xref target="RFC5988"/>, which are dealt with differently:</t>

<t><list style="symbols">
  <t>“Resolving the target against the anchor”:
<xref target="RFC6690"/> Section 2.1 states that the anchor of a link is used as the Base URI
against which the term inside the angle brackets (the target) is resolved,
falling back to the resource’s URI with paths stripped off (its “Origin”).
In contrast to that,
<xref target="RFC8288"/> Section B.2 describes that the anchor is immaterial to the
resolution of the target reference.  <vspace blankLines='1'/>
RFC6690, in the same section, also states that absent anchors set the context of
the link to the target’s URI with its path stripped off, while according to
<xref target="RFC8288"/> Section 3.2, the context is the resource’s base URI.  <vspace blankLines='1'/>
In the context of a Resource Directory, the authors decided to not let
this become an issue by recommending that links in the Resource Directory
be <spanx style="emph">deserializable</spanx> by either rule set to give the same results.
Note that all examples of <xref target="RFC6690"/>, <xref target="RFC8288"/> and this document comply with that rule.  <vspace blankLines='1'/>
The Modernized Link Format is introduced in <xref target="modern6690"/> to formalize what
it means to apply the ruleset of RFC8288 to Link Format documents.</t>
  <t>There is no percent encoding in link-format documents.  <vspace blankLines='1'/>
A link-format document is a UTF-8 encoded string of Unicode characters and
does not have percent encoding, while Link headers are practically ASCII
strings that use percent encoding for non-ASCII characters, stating the
encoding explicitly when required.  <vspace blankLines='1'/>
For example, while a Link header in a page about a Swedish city might read  <vspace blankLines='1'/>
<spanx style="verb">Link: &lt;/temperature/Malm%C3%B6&gt;;rel="live-environment-data"</spanx>  <vspace blankLines='1'/>
a link-format document from the same source might describe the link as  <vspace blankLines='1'/>
<spanx style="verb">&lt;/temperature/Malmö&gt;;rel="live-environment-data"</spanx>  <vspace blankLines='1'/>
Parsers and producers of link-format and header data need to be aware of this
difference.  <vspace blankLines='1'/>
    <!-- The title conversion follows the rule of the text RFC6690 section 2; I
doubt that's the intention, though, as it spills at semicolons/commas and
does not match the ext-value ABNF. -->
  </t>
</list></t>

</section>
</section>
<section anchor="syntax-examples-for-protocol-negotiation" title="Syntax examples for Protocol Negotiation">

<t>[ This appendix should not show up in a published version of this document. ]</t>

<t>The protocol negotiation that is being worked on in <xref target="I-D.silverajan-core-coap-protocol-negotiation"/>
makes use of the Resource Directory.</t>

<t>Until that document is update to use the latest resource-directory
specification, here are some examples of protocol negotiation with the current
Resource Directory:</t>

<t>An endpoint could register as follows from its address [2001:db8:f1::2]:5683:</t>

<figure><artwork><![CDATA[
Req: POST coap://rd.example.com/rd?ep=node1
    &at=coap+tcp://[2001:db8:f1::2]
Content-Format: 40
Payload:
</temperature>;ct=0;rt="temperature";if="core.s"

Res: 2.01 Created
Location-Path: /rd/1234
]]></artwork></figure>

<t>An endpoint lookup would just reflect the registered attributes:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/ep

Res: 2.05 Content
</rd/1234>;ep="node1";base="coap://[2001:db8:f1::2]:5683";
    at="coap+tcp://[2001:db8:f1::2]"
]]></artwork></figure>

<t>A UDP client would then see the following in a resource lookup:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/res?rt=temperature

Res: 2.05 Content
<coap://[2001:db8:f1::2]/temperature>;ct=0;rt="temperature";
    if="core.s"; anchor="coap://[2001:db8:f1::2]"
]]></artwork></figure>

<t>while a TCP capable client could say:</t>

<figure><artwork><![CDATA[
Req: GET /rd-lookup/res?rt=temperature&tt=tcp

Res: 2.05 Content
<coap+tcp://[2001:db8:f1::2]/temperature>;ct=0;rt="temperature";
    if="core.s";anchor="coap+tcp://[2001:db8:f1::2]"
]]></artwork></figure>

</section>
<section anchor="modern6690" title="Modernized Link Format parsing">

<t>The CoRE Link Format as described in <xref target="RFC6690"/> is unsuitable for some use cases
of the Resource Directory, and their resolution scheme is often misunderstood
by developers familiar with <xref target="RFC8288"/>.</t>

<t>For the correct application of base URIs, we describe the interpretation of a
Link Format document as a Modernized Link Format. In Modernized Link Format,
the document is processed as in Link Format, with the exception of Section 2.1
of <xref target="RFC6690"/>:</t>

<t><list style="symbols">
  <t>The URI-reference inside angle brackets (“&lt;&gt;”) describes the target URI
of the link.</t>
  <t>The context of the link is expressed by the “anchor” parameter. If
the anchor attribute is absent, it defaults to the empty reference
(“”).</t>
  <t>Both these references are resolved according to Section 5 of <xref target="RFC3986"/>.</t>
</list></t>

<t>Content formats derived from <xref target="RFC6690"/> which inherit its resolution rules,
like JSON and CBOR link format of <xref target="I-D.ietf-core-links-json"/>, can be
interpreted in analogy to that.</t>

<t>For where the Resource Directory is concerned, all common forms of links (e.g.
all the examples of RFC6690) yield identical results. When interpreting data
read from <spanx style="verb">.well-known/core</spanx>, differences in interpretation only affect links
where the absent anchor attribute means <spanx style="verb">coap://host/</spanx> according to RFC6690 and
<spanx style="verb">coap://host/.well-known/core</spanx> according to Modernized Link format; those
typically only occur in conjunction with the vaguely defined implicit “hosts”
relationship.</t>

<section anchor="modern-safe" title="For endpoint developers">

<t>When developing endpoints, i.e. when generating documents that will be submitted
to a Resource Directory, the differences between Modernized Link Format and
RFC6690 can be ignored as long as</t>

<t><list style="symbols">
  <t>all relative references start with a slash,</t>
</list></t>

<t>and any of the following applies:</t>

<t><list style="symbols">
  <t>There is no anchor attribute, and the context of the link does not matter to
the application.  <vspace blankLines='1'/>
Example:
<spanx style="verb">&lt;/sensors&gt;;ct=40</spanx></t>
  <t>The anchor is a relative reference.  <vspace blankLines='1'/>
Example:
<spanx style="verb">&lt;/t&gt;;anchor="/sensors/temp";rel="alternate"</spanx></t>
  <t>The target is an absolute reference.  <vspace blankLines='1'/>
Example:
<spanx style="verb">&lt;http://www.example.com/sensors/t123&gt;;anchor="/sensors/temp";rel="describedby"</spanx></t>
</list></t>

</section>
<section anchor="examples-of-links-with-differing-interpretations" title="Examples of links with differing interpretations">

<t>Examples of links with different interpretations from either applying RFC6690
or Modernized Link Format are shown here. The example is assumed to be obtained
from a &lt;/device/index&gt; document.</t>

<t><list style="symbols">
  <t><spanx style="verb">&lt;sensors&gt;</spanx>: The target is <spanx style="verb">/sensors</spanx> in RFC6690 and <spanx style="verb">/device/sensors</spanx>
in Modernized Link Format
(whereas <spanx style="verb">&lt;/sensors&gt;</spanx> would be unambiguous).</t>
  <t><spanx style="verb">&lt;?which=these&gt;</spanx>: The target is <spanx style="verb">/?which=these</spanx> in RFC6690 and
<spanx style="verb">/device/index?which=these</spanx> in Modernized Link Format.</t>
  <t><spanx style="verb">&lt;sensors&gt;;anchor="http://example.com/calib-proto/1234";rel="topic"</spanx>
is about <spanx style="verb">http://example.com/sensors</spanx> in RFC6690 and about <spanx style="verb">/device/sensors</spanx>
in Modernized Link Format.  <vspace blankLines='1'/>
This link can not be expressed in RFC6690 link format without the server
explicitly expressing most of its own URI (which is problematic in reverse
proxy scenarios or when the Uri-Host option is not sent).</t>
  <t><spanx style="verb">&lt;/i&gt;;rel="alternate";anchor=""</spanx>: According to RFC6690, this states that the <spanx style="verb">/</spanx>
resource has an alternative representation at <spanx style="verb">/i</spanx>, whereas Modernized Link
Format says that <spanx style="verb">/devices/index</spanx> has an alternative representation at <spanx style="verb">/i</spanx>.  <vspace blankLines='1'/>
The <spanx style="verb">anchor</spanx> attribute is usually left out; the link <spanx style="verb">&lt;/i&gt;;rel="alternate"</spanx>
is equivalent to the above and results in the same interpretations.</t>
</list></t>

<!--  LocalWords:  lookups multicast lookup RESTful CoRE LoWPAN CoAP
 -->
<!--  LocalWords:  microcontrollers URI DNS EP IP EPs discoverable
 -->
<!--  LocalWords:  Metadata metadata lossless anycast ABRO RDNSS ICMP
 -->
<!--  LocalWords:  DHCPv RD's DHCP RDs unicast JSON CBOR wildcard TLS
 -->
<!--  LocalWords:  subdomain substring prepending subtype DTLS UDP
 -->
<!--  LocalWords:  routability NTP TCP WiFi GPRS FQDN SLAAC IPv SDOs
 -->
<!--  LocalWords:  OMA LWM IETF OMNA API SMS MSISDN
 -->

</section>
</section>


  </back>

<!-- ##markdown-source:
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
mEyUOAFS7SkeD2IoyT6X2Zy9OvgnHivMZpKANjacHJ6qNB+QIuS0xCMuuB4O
Yzk00Zuqf3Re8hQ/tA0s74/581z6cP2Ps+ovb3zI0+T3b49PSLqn7xiJfk6o
5pyH307cYdpJxiwgQ3K6FPfAYvTa/vcdJi+zJswMiPeo8mFm7bR4f0smjYnc
lgusjej1CjMKMnucE+0JkO3X3dKvmq/k4kqvSs5iQqFxWQirKqapCITVLBYb
5olJezRxitO7Knl4eDQVTHgcn/1oU8kOVzMMAGrIzAZIY8JBSWwZtDrDfKcU
+fTQye/Xm+zbl7+2BCLBYF6hcnMFFHhGoomu6zghl7m+5wzIf5XBOsMw6/1k
lp2DZlZxSQYsP5JPp7P2u3S0GP0EVh82tqIYAZxJSKN5ruwXW7ZmI1pdIr8E
ZXUt8YwN7nLtuLwivsLFKqRLvpgqmffdq9zQFV1Px+up0Jx19CUFK4DuICZX
pfxYrArXgnvUzxx9ZjduX9aGdwOWjV+j96Od4sWkKZnvsCjpT1y7bhJhn2jR
vda5H0aXkER2Ca0mDUkigj2V8gqwpMYxLgi9Kx207jMWbuLFm5eaHmnXN+6f
1db2+iPfgOuMRZWrfEZHLKaeGCAKHKgi49ES8/GyKHD35OXBwSFLrkExAIrl
gh5RAo0dUgJhuBvmPltsZ78Ko5OoliR5uD5H3ZCnJmzb58Rj6e3s729G3261
vt1iT1d8g1vPbMd1KUMIW/zY+bn4a8zI1V0T5CZeJL8+WEfyBU4X47kQ1MYw
9m5GjCZZtLbOeUGUVT8KU1LP96d73HQvV4kPnt9gv796LtIZckkfz+56xhEd
BWytNdNQ4q4Lv43UxutccYUmsZitVVioT/AAJKuG7B0KEULdyz1XuTIcMQrw
Re8YXUwf/dsm3aTE4WOLEX/A/CWE8VA7DG3IUjRnAs2yD6kt3YkkI9ojf01f
yNzJpeGP7NAyhFVjw64IfZsz6aoS+NfWaGe0sbmr+bjhDlAhYgEwYsIAqvsU
0Qkt9yHic1tfGmNRlpIpG2WzICs/R/Aux7UxLq9r8hwpTji/wsR2yJQ2Jqu8
j3wQWTZy5CVnpLYH+qb8yRwOW5APuKHgwNOcxpC3gzXe4w3qi/drAcvLFPso
j5/+53BIacSf40PboUqz+V+OZcP+clVMr9BfbKZF7mQ+O1/zqvCxb3u5kjd6
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
Ic8mv9zzZgRG8764JhSoCJ0OxOgC8743FpVu4812bVoc9PLFiWLneIsd7oMT
FqfY9i6GEzLxn2QoinbxDy8rzQfLlI5dFps2rYnj+bXNNW7Gp3k5X9V0ddwb
bW+n2eN8RhRvsD2o8XvtP47SF/lcEJBlH3Xaof4s06cVSABpJfrTKLYTTB+k
HJ50o0CiWrSPSD8UA3oz/sr+aHsP88y5wPbdwuqC6Hv7634cpfpX5kYljC2u
RGZB4/T1H9++fa3+bvzkvx+fmDLWp9ucwkcarRfr75que8K+uxf5x+HhmVa2
YsffFMv6esgulfMiB/k5SNbaLBoOKijH6DzSes0pw3eelNXBkvcNgHtOsp41
8av8OnamiD3EGnEzSNC7eNrTPqFEKGUXGNBWySgVw18cDBYhgMrXkiyoZ446
FZ790Hq9reu1WRq6QNucy5cJe1e1silympkE02+apkSSPmBGd+EtDU3aYA/v
qfvT1YiuG9XNI1Ko1f/ZITEgf2+V3Q0meyMXfRgZp0iRIz2OdmwUl5sP9U87
mEBoyuB8uflwf3sb/ha0IwIrV+BWQjbG/NCP18NqPhspjPq0ujjY//b+Hrzp
lIlPn+T3ofzxs3gldHico9fm3IxQLKQUJ9hPXq73Q2U6TExYHQTMDqP18KOC
hhkAhW85yC3hU9rCw/PowXT58N7OgwQTqzP8C0oFkJvZA8koNRzN5nJFuWad
BhFO/Gu/PWfccf14agDkw/nqI3y7PH2YCbI3/tzqypc+k/0zh4WMY/UF20YC
nXSMX2/g86C8tj95b3yw9jD/YNjB616++bhjgAshq0urJGCrqvltt866zvXu
l85uYbXqK3fMFz8ZbZPWHqEv+n0SfX5d0/Bpga3vuCDfcAo3hXS4SpQwkc+J
Msux7JCm0VSnSxEApHWjb9e5qNUfZHdrWSd2sa3fe3KxFSHxQRzU5H5dahxa
FGHSfBPWfEv1L4P1Wi2Qfm3iAUc2PFANxlTPV8vhDNRhtRrLBpmpMP2FTUOp
RkhlKtxdoPA/Rx1kFnYXwwN0c7vYjaFRaq5IXP4o5D7xkGdhqIpQrIjkywBF
bu4j7uVv7DfhAd3oOfkX8pD8lmbDbppxltEas2F1SVkk2i0u7KZUs/+1Em5p
JbCN0HtFNXJHuQnWHS7ahh0uLw9IS+vX0LzO6S4NObFdtXNXksz0HmJhCYvW
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

-->

</rfc>

