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

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

<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="no"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc ipr="trust200902" docName="draft-ietf-core-etch-04" category="std">

  <front>
    <title abbrev="CoAP Fetch Patch">Patch and Fetch Methods for Constrained Application Protocol (CoAP)</title>

    <author initials="P." surname="van der Stok" fullname="Peter van der Stok">
      <organization>Consultant</organization>
      <address>
        <email>consultancy@vanderstok.org</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="A." surname="Sehgal" fullname="Anuj Sehgal">
      <organization>Consultant</organization>
      <address>
        <email>anuj@iurs.org</email>
      </address>
    </author>

    <date year="2016" month="November" day="14"/>

    <area>Applications</area>
    <workgroup>core</workgroup>
    <keyword>CoAP</keyword>

    <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 a resource continuity is
required, replacing or requesting the whole resource is undesirable. Several
applications using CoAP will need to perform partial resource accesses.</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>

  <middle>


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

<t>Similar to HTTP, the GET method defined in
<xref target="RFC7252"/> for the Constrained Application Protocol (CoAP) only allows
the specification of a URI and request
parameters in CoAP options, not the transfer of a request payload
detailing the request.  This leads to some applications to using POST
where actually a cacheable, idempotent, safe request is desired.</t>

<t>Again similar to the original specification of HTTP,
the PUT method defined in <xref target="RFC7252"/> only allows to replace a complete resource. This also leads
applications to use POST where actually a cacheable, possibly idempotent
request is desired.</t>

<t>The present specification adds new CoAP methods: FETCH, to perform the
equivalent of a GET with a request body; and the twin methods PATCH and iPATCH, to
modify parts of a CoAP resource.</t>

<section anchor="intro-fetch" title="FETCH">

<t>The CoAP GET method <xref target="RFC7252"/> is used to obtain the representation of
a resource, where the resource is specified by a URI and additional
request parameters can additionally shape the representation.  This
has been modelled after the HTTP GET operation and the REST model in
general.</t>

<t>In HTTP, a resource is often used to search for information, and
existing systems varyingly use the HTTP GET and POST methods to
perform a search.  Often a POST method is used for the sole reason
that a larger set of parameters to the search can be supplied in the
request body than can
comfortably be transferred in the URI with a GET request.
The draft <xref target="I-D.snell-search-method"/> proposes a SEARCH method that is similar to
GET in most properties but enables sending a request body as with
POST.
The FETCH method defined in the present specification is inspired by
<xref target="I-D.snell-search-method"/>, which
updates the definition and semantics of the HTTP SEARCH request
method previously defined by <xref target="RFC5323"/>.  However, there is no intention
to limit FETCH to search-type operations, and the resulting
properties may not be the same as those of HTTP SEARCH.</t>

<t>A major problem with GET is that the information that controls the
request needs to be bundled up in some unspecified way into the URI.
Using the request body for this information has a number of
advantages:</t>

<t><list style="symbols">
  <t>The client can specify a media type (and a content encoding),
enabling the server to unambiguously interpret the request
parameters in the context of that media type.  Also, the request
body is not limited by the character set limitations of URIs,
enabling a more natural (and more efficient) representation of
certain domain-specific parameters.</t>
  <t>The request parameters are not limited by the maximum size of the
URI.  In HTTP, that is a problem as the practical limit for this
size varies.  In CoAP, another problem is that the block-wise
transfer is not available for transferring large URI options in
multiple rounds.</t>
</list></t>

<t>As an alternative to using GET, many implementations make use of the
POST method to perform extended requests, even if they are
semantically idempotent, safe, and even cacheable, to be able to pass
along the input parameters within the request payload as opposed to
using the request URI.</t>

<t>The FETCH method provides a solution that spans the gap between the
use of GET and POST.  As with POST, the input to the FETCH operation
is passed along within the payload of the request rather than as part
of the request URI.  Unlike POST, however the semantics of the FETCH
method are more specifically defined.</t>

</section>
<section anchor="intro-patch" title="PATCH and iPATCH">

<t>PATCH is also specified for HTTP in <xref target="RFC5789"/>. Most of the motivation for PATCH described
in <xref target="RFC5789"/> also applies here. iPATCH is the idempotent version of PATCH.</t>

<t>The PUT method exists to overwrite a resource with completely
new contents, and cannot be used to perform partial changes.
When using PUT for partial changes, proxies and caches, and
even clients and servers, may get confused as to the result of
the operation.
PATCH was not adopted in an early design stage of CoAP,
however, it has become necessary with the arrival of
applications that require partial updates to resources
(e.g. <xref target="I-D.vanderstok-core-comi"/>). Using PATCH
avoids transferring all data associated with a resource in
case of modifications, thereby not burdening the constrained
communication medium.</t>

<t>This document relies on knowledge of the PATCH specification
for HTTP <xref target="RFC5789"/>. This document provides
extracts from <xref target="RFC5789"/> to make independent
reading possible.</t>

</section>
<section anchor="requirements-language" title="Requirements Language">

<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"/>.</t>

</section>
<section anchor="terminology-and-acronyms" title="Terminology and Acronyms">

<t>This document uses terminology defined in <xref target="RFC5789"/> and <xref target="RFC7252"/>.</t>

<t>Specifically, it uses the terms “safe” and “idempotent” as defined in Section 5.1 of <xref target="RFC7252"/>.
(Further discussion of safe and idempotent methods can now be found in Section
4.2.1 and 4.2.2 of <xref target="RFC7231"/>, respectively; the implications of idempotency of
methods on server implementations are also discussed in Section 4.5 of
<xref target="RFC7252"/>.)</t>

</section>
</section>
<section anchor="fetch" title="FETCH Method">

<t>The CoAP FETCH method is used to obtain a representation of a
resource, giving a number of request parameters.  Unlike the CoAP GET
method, which requests that a server return a representation of the
resource identified by the effective request URI (as defined by <xref target="RFC7252"/>), the FETCH method is used by a client to ask the server to
produce a representation as described by the request parameters (including
the request options and the payload) based on the resource specified
by the effective request URI.  The payload returned in response to a
FETCH cannot be assumed to be a complete representation of the
resource identified by the effective request URI, i.e., it cannot be
used by a cache as a payload to be returned by a GET request.</t>

<t>Together with the request options, the body of the request (which may
be constructed from multiple payloads using the block protocol
<xref target="RFC7959"/>) defines the request parameters.
With the
FETCH method, implementations may submit a request body of any media type that is
defined with the semantics of selecting information from
a resource in such a FETCH request; it is outside the scope of this document how
information about media types admissible for the specific resource is obtained by the client
(although we can hint that form relations (<xref target="I-D.hartke-core-apps"/>)
might be a preferred way).
It is RECOMMENDED that any discovery method that allows a client to
find out that the server supports FETCH also
provides information what FETCH payload media types are applicable.</t>

<t>FETCH requests are both safe and idempotent with regards to the
resource identified by the request URI.  That is, the performance of
a fetch is not intended to alter the state of the targeted resource.
(However, while processing a fetch request, a server can be expected
to allocate computing and memory resources or even create additional
server resources through which the response to the search can be
retrieved.)</t>

<t>A successful response to a FETCH request is expected to provide some
indication as to the final disposition of the requested operation.
If a successful response includes a body payload, the payload is expected to
describe the results of the FETCH operation.</t>

<t>Depending on the response code as defined by <xref target="RFC7252"/>, the response
to a FETCH request is cacheable; the request body is part of the
cache key.  Specifically, 2.05 “Content” response codes, the
responses for which are cacheable, are a usual way to respond to a
FETCH request.  (Note that this aspect differs markedly from
<xref target="I-D.snell-search-method"/>.)  (Note also that caches that cannot use
the request payload as part of the cache key will not be able to
cache responses to FETCH requests at all.)  The Max-Age option in the
response has equivalent semantics to its use in a GET.</t>

<t>The semantics of the FETCH method change to a “conditional FETCH” if
the request message includes an If-Match, or If-None-Match option
(<xref target="RFC7252"/>).  A conditional FETCH requests that the query be
performed only under the circumstances described by the conditional
option(s).  It is important to note, however, that such conditions
are evaluated against the state of the target resource itself as
opposed to the results of the FETCH operation.</t>

<section anchor="fetch-response" title="Response Codes">

<t>FETCH for CoAP adopts the response codes as specified in
sections 5.9 and 12.1.2 of <xref target="RFC7252"/> as well as additional
response codes mentioned in <xref target="fetch-errors"/>.</t>

</section>
<section anchor="fetch-errors" title="Error Handling">

<t>A FETCH request may fail under certain known conditions.
Beyond the conditions already defined in <xref target="RFC7252"/> for GET, noteworthy ones are:</t>

<t><list style="hanging">
  <t hangText='Malformed FETCH payload:'>
  If a server
determines that the payload provided with a FETCH request is
not properly formatted, it can return a 4.00 (Bad Request)
CoAP error. The definition of a malformed payload depends
upon the CoAP Content-Format specified with the request.</t>
  <t hangText='Unsupported FETCH payload:'>
  In case a client
sends a payload that is inappropriate for the resource
identified by the Request-URI, the server can return a 4.15
(Unsupported Content-Format) CoAP error. The server can
determine if the payload is supported by checking the CoAP
Content-Format specified with the request.</t>
  <t hangText='Unprocessable request:'>
  This situation occurs
when the payload of a FETCH request is determined as valid,
i.e. well-formed and supported, however, the server is
unable to or incapable of processing the request. The server
can return a 4.22 (Unprocessable Entity) CoAP error. In
situations when the server has
insufficient computing resources to
complete the request successfully, it can return a 4.13 (Request Entity
Too Large) CoAP error (see also below).

In case there are more specific errors that provide more
insight into the problem, then those should be used.</t>
  <t hangText='Request too large:'>
  If the payload of the FETCH
request is larger than a CoAP server can process, then it
can return the 4.13 (Request Entity Too Large) CoAP
error.</t>
</list></t>

<t>It is possible that other error situations, not mentioned
here, are encountered by a CoAP server while processing the
FETCH request. In these situations other appropriate CoAP
status codes can also be returned.</t>

</section>
<section anchor="fetch-option" title="Option Numbers">

<t>FETCH for CoAP adopts the option numbers as specified in
sections 5.10 and 12.2 of <xref target="RFC7252"/>.</t>

<t>Generally, options defined for GET act in an analogous way for FETCH.
Two specific cases are called out in the rest of this section.</t>

<section anchor="fetch-format" title="The Content-Format Option">

<t>A FETCH request MUST include a Content-Format option (see Section
5.10.3 of <xref target="RFC7252"/>) to specify the
media type and content encoding of the request body.
(Typically, the media type will specifically have been designed to
specify details for a selection or a search on a resource.)</t>

</section>
<section anchor="fetch-etag" title="The ETag Option">

<t>The ETag Option on a FETCH result has the same semantics as defined in
Section 5.10.6 of <xref target="RFC7252"/>.  In particular, its use as a response
option describes the “tagged representation”, which for FETCH is the
same as the “selected representation”.  The FETCH payload is input to
that selection process and therefore needs to be part of the cache
key.  Similarly, the use of ETag as a request option can elicit a 2.03 Valid
response if the representation associated with the ETag would still be
selected by the FETCH request (including its payload).</t>

</section>
</section>
<section anchor="fetch-observe" title="Working with Observe">

<t>The Observe option <xref target="RFC7641"/> can be used with a FETCH request as it
can be used with a GET request.</t>

</section>
<section anchor="fetch-block" title="Working with Block">

<t>The Block1 option <xref target="RFC7959"/> can be used with a FETCH
request as it would be used with a POST request; the Block2 option
can then be used as with GET or POST.</t>

</section>
<section anchor="fetch-discuss" title="Building FETCH Requests">

<t>One property of FETCH that may be non-obvious is that a FETCH request
cannot be generated from a link alone, but also needs a way to
generate the request payload.  Again, form relations
(<xref target="I-D.hartke-core-apps"/>) may be able to fill parts of this gap.</t>

</section>
<section anchor="fetch-example" title="A Simple Example for FETCH">

<t>The FETCH method needs a media type for its payload (as expressed by
the Content-Format request option) that specifies the search query in
a similar detail as is shown for the patch payload in the PATCH
example in <xref target="example"/>. (<xref target="I-D.snell-search-method"/> invents a
<spanx style="verb">text/query</spanx> format based on some hypothetical SQL dialect for its
examples.)</t>

<t>The example below illustrates retrieval of a subset of a JSON <xref target="RFC7159"/> object
(the same object as used in <xref target="example"/>).  Using a hypothetical media type
<spanx style="verb">application/example-map-keys+json</spanx> (with a Content-Format ID of
NNN – not defined as this is just an example), the client specifies
the items in
the object that it wants: it supplies a JSON array giving the map keys
for these items.  A resource located at <spanx style="verb">coap://www.example.com/object</spanx>
can be represented by a JSON document that we will consider as the
target of the FETCH. The client wants to learn the contents of the
single map key <spanx style="verb">foo</spanx> within this target:</t>

<figure title="FETCH example: JSON document returned by GET"><artwork><![CDATA[
{
  "x-coord": 256,
  "y-coord": 45,
  "foo": ["bar","baz"]
}
]]></artwork></figure>

<t>The example FETCH request specifies a single top-level member desired
by giving its map key as the sole element of the <spanx style="verb">example-map-keys</spanx>
payload:</t>

<figure title="FETCH example: Request"><artwork><![CDATA[
FETCH CoAP://www.example.com/object
Content-Format: NNN (application/example-map-keys+json)
Accept: application/json
[
  "foo"
]
]]></artwork></figure>

<t>The server returns a subset document with just the selected member:</t>

<figure title="FETCH example: Response with subset JSON document"><artwork><![CDATA[
2.05 Content
Content-Format: 50 (application/json)
{
  "foo": ["bar","baz"]
}
]]></artwork></figure>

<t>By the logic of this example, the requester could have entered more
than one map key into the request payload array and would have
received a more complete subset of the top-level JSON object that is
representing the resource.</t>

</section>
</section>
<section anchor="patch" title="PATCH and iPATCH Methods">

<t>The PATCH and iPATCH methods request that a set of changes described in
the request payload is applied to the target resource of the
request.  The set of changes is represented in a format
identified by a media type.  If the Request-URI does not point
to an existing resource, the server MAY create a new resource
with that URI, depending on the patch document type (whether
it can logically modify a null resource) and permissions, as well as other
conditions such as the degree of control the server gives clients in
creating new entries in its URI space (see also <xref target="errors"/>).
Creation of a new resource would result in a 2.01 (Created)
Response Code dependent on the patch document type.</t>

<t>Restrictions to a PATCH or iPATCH request can be made by including the If-Match
or If-None-Match options in the request (see Section 5.10.8.1
and 5.10.8.2 of <xref target="RFC7252"/>).  If the resource
could not be created or modified, then an appropriate Error
Response Code SHOULD be sent.</t>

<t>The difference between the PUT and PATCH requests is documented in <xref target="RFC5789"/>.
When a request is intended to effect a partial update of a given resource, clients
cannot use PUT while supplying just the update, but might be able to use PATCH or iPATCH.</t>

<t>The PATCH method is not safe and not idempotent, as with the HTTP
PATCH method
specified in <xref target="RFC5789"/>.</t>

<t>The iPATCH method is not safe but idempotent, as with the CoAP PUT method
specified in <xref target="RFC7252"/>, Section 5.8.3.</t>

<t>A client can mark a request as idempotent by using the iPATCH method
instead of the PATCH method.  This is the only difference between the
two.  The indication of idempotence may enable the server to keep less
state about the interaction; some constrained servers may only
implement the iPATCH variant for this reason.</t>

<t>PATCH and iPATCH are both atomic.
The server MUST apply the entire set of changes atomically and
never provide a partially modified representation to a
concurrently executed GET request. Given the constrained
nature of the servers, most servers will only execute CoAP
requests consecutively, thus preventing a concurrent partial
overlapping of request modifications. Resuming,
modifications MUST NOT be applied to the server state when an
error occurs or only a partial execution is possible on the resources present
in the server.</t>

<t>The atomicity applies to a single server. When a PATCH or iPATCH request is
multicast to a set of servers, each server can either execute all required
modifications or not. It is not required that all servers execute all modifications
or none. An Atomic Commit protocol that provides multiple server atomicity
is out of scope.</t>

<t>A PATCH or iPATCH response can invalidate a cache as with the
PUT response. Caching behaviour as function of the successful (2.xx)
response codes for PATCH or iPATCH are:</t>

<t><list style="symbols">
  <t>A 2.01 (Created) response invalidates any cache entry for
the resource indicated by the Location-* Options; the
payload is a representation of the action result.</t>
  <t>A 2.04 (Changed) response invalidates any cache entry
for the target resource; the payload is a representation of
the action result.</t>
</list></t>

<t>There is no guarantee that a resource can be modified with
PATCH or iPATCH.
Servers MUST ensure that a received PATCH
body is appropriate for the type of resource identified by
the target resource of the request.</t>

<t>It is RECOMMENDED that any discovery method that allows a client to
find out that the server supports one of PATCH and iPATCH also
provides information what patch payload media types are applicable and
which of the two methods are implemented by the server for each of
these media types.</t>

<t>Servers that do not rely on the idempotency of iPATCH can easily
support both PATCH and iPATCH, and it is RECOMMENDED they do so.
This is inexpensive to do, as, for iPATCH, there is no requirement on
the server to check that the client’s intention that the request be
idempotent is fulfilled (although there is diagnostic value in that
check, so a less-constrained implementation may want to perform it).</t>

<section anchor="example" title="Simple Examples for PATCH and iPATCH">

<t>The example is taken over from <xref target="RFC6902"/>,
which specifies a JSON notation for PATCH operations. A
resource located at coap://www.example.com/object contains a target
JSON document.</t>

<figure><artwork align="left"><![CDATA[
JSON document original state:
    {
      "x-coord": 256,
      "y-coord": 45,
      "foo": ["bar","baz"]
    }

REQ: iPATCH CoAP://www.example.com/object
Content-Format: 51 (application/json-patch+json)
    [
      { "op":"replace", "path":"x-coord", "value":45}
    ]

RET: CoAP 2.04 Changed

JSON document final state:
    {
      "x-coord": 45,
      "y-coord": 45,
      "foo": ["bar","baz"]
    }
]]></artwork></figure>

<t>This example illustrates use of an idempotent modification to the
x-coord member of the existing resource “object”.
The 2.04 (Changed) response code is conform with the CoAP
PUT method.</t>

<t>The same example using the Content-Format application/merge-patch+json from <xref target="RFC7396"/> looks like:</t>

<figure><artwork align="left"><![CDATA[
JSON document original state:
    {
      "x-coord": 256,
      "y-coord": 45,
      "foo": ["bar","baz"]
    }

REQ: iPATCH CoAP://www.example.com/object
Content-Format: 52 (application/merge-patch+json)
     { "x-coord":45}

RET: CoAP 2.04 Changed

JSON document final state:
    {
      "x-coord": 45,
      "y-coord": 45,
      "foo": ["bar","baz"]
    }
]]></artwork></figure>

<t>The examples show the use of the iPATCH method, but the use of the PATCH
method would have led to the same result. Below a non-idempotent modification
is shown. Because the action is non-idempotent, iPATCH returns an error,
while PATCH executes the action.</t>

<figure><artwork align="left"><![CDATA[
JSON document original state:
    {
      "x-coord": 256,
      "y-coord": 45,
      "foo": ["bar","baz"]
    }

REQ: iPATCH CoAP://www.example.com/object
Content-Format: 51 (application/json-patch+json)
    [
      { "op":"add","path":"foo/1","value":"bar"}
    ]
RET: CoAP 4.00 Bad Request
Diagnostic payload: Patch format not idempotent

JSON document final state is unchanged

REQ: PATCH CoAP://www.example.com/object
Content-Format: 51 (application/json-patch+json)
    [
      { "op":"add","path":"foo/1","value":"bar"}
    ]
RET: CoAP 2.04 Changed

JSON document final state:
    {
      "x-coord": 45,
      "y-coord": 45,
      "foo": ["bar","bar","baz"]
    }
]]></artwork></figure>

</section>
<section anchor="response" title="Response Codes">

<t>PATCH and iPATCH for CoAP adopt the response codes as specified in
sections 5.9 and 12.1.2 of <xref target="RFC7252"/> and add 4.09 “Conflict” and 4.22
“Unprocessable Entity” with the semantics specified in <xref target="errors"/> of
the present specification.</t>

</section>
<section anchor="option" title="Option Numbers">

<t>PATCH and iPATCH for CoAP adopt the option numbers as specified in
sections 5.10 and 12.2 of <xref target="RFC7252"/>.</t>

</section>
<section anchor="errors" title="Error Handling">

<t>A PATCH or iPATCH request may fail under certain known conditions. These
situations should be dealt with as expressed below.</t>

<t><list style="hanging">
  <t hangText='Malformed PATCH or iPATCH payload:'>
  If a server
determines that the payload provided with a PATCH or iPATCH request is
not properly formatted, it can return a 4.00 (Bad Request)
CoAP error. The definition of a malformed payload depends
upon the CoAP Content-Format specified with the request.</t>
  <t hangText='Unsupported PATCH or iPATCH payload:'>
  In case a client
sends a payload that is inappropriate for the resource
identified by the Request-URI, the server can return a 4.15
(Unsupported Content-Format) CoAP error. The server can
determine if the payload is supported by checking the CoAP
Content-Format specified with the request.</t>
  <t hangText='Unprocessable request:'>
  This situation occurs
when the payload of a PATCH request is determined as valid,
i.e. well-formed and supported, however, the server is
unable to or incapable of processing the request. The server
can return a 4.22 (Unprocessable Entity) CoAP error. More
specific scenarios might include situations when:

      <list style="symbols">
        <t>the server has insufficient computing resources to
complete the request successfully — 4.13 (Request Entity
Too Large) CoAP Response Code (see below),</t>
        <t>the resource specified in the request becomes invalid
by applying the payload — 4.09 (Conflict) CoAP
Response Code (see below)).</t>
      </list>

In case there are more specific errors that provide more
insight into the problem, then those should be used.</t>
  <t hangText='Resource not found:'>
  The 4.04 (Not Found) error
should be returned in case the payload of a PATCH request
cannot be applied to a non-existent resource.</t>
  <t hangText='Failed precondition:'>
  In case the client uses
the conditional If-Match or If-None-Match option to define a
precondition for the PATCH request, and that precondition
fails, then the server can return the 4.12 (Precondition
Failed) CoAP error.</t>
  <t hangText='Request too large:'>
  If the payload of the PATCH
request is larger than a CoAP server can process, then it
can return the 4.13 (Request Entity Too Large) CoAP
error.</t>
  <t hangText='Conflicting state:'>
  If the modification specified by a PATCH or iPATCH request causes
the resource to enter an inconsistent state that the server cannot resolve,
the server can return
the 4.09 (Conflict) CoAP response.   The server
SHOULD generate a payload that includes enough information for a user
to recognize the source of the conflict.
The server MAY return the actual resource state to provide the client with
the means to create a new consistent resource state. Such a situation might
be
encountered when a structural modification is applied to a
configuration data-store, but the structures being modified do not
exist.</t>
  <t hangText='Concurrent modification:'>
  Resource constrained
devices might need to process requests in the order they are
received. In case requests are received concurrently to
modify the same resource but they cannot be queued, the
server can return a 5.03 (Service unavailable) CoAP response code.</t>
  <t hangText='Conflict handling failure:'>
  If the modification implies the reservation of resources or the waiting on
conditions to become true,
leading to a too long request execution time, the server can return 5.03
(service unavailable) response code.</t>
</list></t>

<t>It is possible that other error situations, not mentioned
here, are encountered by a CoAP server while processing the
PATCH request. In these situations other appropriate CoAP
status codes can also be returned.</t>

</section>
</section>
<section anchor="the-new-set-of-coap-methods" title="The New Set of CoAP Methods">

<t>Adding three new methods to CoAP’s existing four may seem like a major
change.  However, both FETCH and the two PATCH variants fit well into
the REST paradigm and have been anticipated on the HTTP side.
Adding both a non-idempotent and an idempotent PATCH variant allows to
keep interoperability with HTTP’s PATCH method as well as the use/indication of
an idempotent PATCH if that is possible, saving significant effort on
the server side.</t>

<t>Interestingly, the three new methods fit into the old table of methods
with a surprising similarity in the idempotence and safety attributes:</t>

<texttable>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>safe</ttcol>
      <ttcol align='left'>idempotent</ttcol>
      <c>0.01</c>
      <c>GET</c>
      <c>0.05</c>
      <c>FETCH</c>
      <c>yes</c>
      <c>yes</c>
      <c>0.02</c>
      <c>POST</c>
      <c>0.06</c>
      <c>PATCH</c>
      <c>no</c>
      <c>no</c>
      <c>0.03</c>
      <c>PUT</c>
      <c>0.07</c>
      <c>iPATCH</c>
      <c>no</c>
      <c>yes</c>
      <c>0.04</c>
      <c>DELETE</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>no</c>
      <c>yes</c>
</texttable>

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

<t>This section analyses the possible threats to the CoAP FETCH and PATCH or iPATCH
methods.  It is meant to inform protocol and application
developers about the security limitations of CoAP FETCH and PATCH or iPATCH
as
described in this document.</t>

<t>The FETCH method is subject to the same general security
considerations as all CoAP methods as described in Section 11 of <xref target="RFC7252"/>.
Specifically, the security considerations for FETCH are closest to
those of GET, except that the FETCH request carries a payload that may
need additional protection.
The payload of a FETCH request may reveal more detailed information
about the specific portions of a resource of interest to the
requester than a GET request for the entire resource would; this may
mean that confidentiality protection of the request by DTLS or other
means is needed for FETCH where it wouldn’t be needed for GET.</t>

<t>The PATCH and iPATCH methods are subject to the same general security
considerations as all CoAP methods as described in Section 11 of <xref target="RFC7252"/>.
The specific security considerations for PATCH or iPATCH are nearly
identical to the security considerations for PUT (<xref target="RFC7252"/>); the
security considerations of Section 5 of <xref target="RFC5789"/> also apply to
PATCH and iPATCH.
Specifically, there is likely to be a need for authorizing requests
(possibly through access control and/or
authentication) and for ensuring that data is not corrupted through
transport errors or through accidental overwrites.
The mechanisms used for PUT can be used for PATCH or iPATCH as well.</t>

<t>The new methods defined in the present specification are secured
following the CoAP recommendations for the existing methods as
specified in section 9 of <xref target="RFC7252"/>.  When additional security
techniques are standardized for CoAP (e.g., Object Security), these
are then also available for securing the new methods.</t>

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

<t>IANA is requested to add the following entries to the sub-registry “CoAP Method
Codes”:</t>

<texttable>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0.05</c>
      <c>FETCH</c>
      <c>[RFCthis]</c>
      <c>0.06</c>
      <c>PATCH</c>
      <c>[RFCthis]</c>
      <c>0.07</c>
      <c>iPATCH</c>
      <c>[RFCthis]</c>
</texttable>

<t>The FETCH method is idempotent and safe, and it returns the same
response codes that GET can return, plus 4.13 (Request Entity Too
Large), 4.15 (Unsupported Content-Format), and 4.22 (Unprocessable
Entity) with the semantics specified in <xref target="fetch-errors"/>.</t>

<t>The PATCH method is neither idempotent nor safe.  It returns the same
response codes that POST can return, plus 4.09 (Conflict) and 4.22
(Unprocessable Entity) with the semantics specified in <xref target="errors"/>.</t>

<t>The iPATCH method is identical to the PATCH method, except that it is
idempotent.</t>

<t>IANA is requested to add the following code to the sub-registry “CoAP
response codes”:</t>

<texttable>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>4.09</c>
      <c>Conflict</c>
      <c>[RFCthis]</c>
      <c>4.22</c>
      <c>Unprocessable Entity</c>
      <c>[RFCthis]</c>
</texttable>

<t>IANA is requested to add entries to the sub-registry “CoAP
Content-Formats”, within the “CoRE Parameters” registry:</t>

<texttable>
      <ttcol align='left'>Media Type</ttcol>
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>application/json-patch+json</c>
      <c>&#160;</c>
      <c>51</c>
      <c><xref target="RFC6902"/></c>
      <c>application/merge-patch+json</c>
      <c>&#160;</c>
      <c>52</c>
      <c><xref target="RFC7396"/></c>
</texttable>

<t>Editors’ note (to be removed by RFC editor):
RFC 6902 and RFC 7396 are not necessary to implement the present
specification, not even an option for it.
It was just convenient to use the present document to register
content-format identifiers for them (and they are used in examples).
Therefore, these references are correctly classified as <spanx style="emph">informative</spanx>.</t>

</section>
<section anchor="change-log" title="Change log">

<t>When published as an RFC, this section needs to be removed.</t>

<t>Version 00 is a composition from draft-vanderstok-core-patch-03 and
draft-bormann-core-coap-fetch-00 and replaces these two drafts.</t>

<t>Version 01 added an example for FETCH and is more explicit about
some response codes and options.</t>

<t>Version 02 addresses the WGLC comments.</t>

<t>Version 03 addresses the IETF last-call comments.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor='RFC2119' target='http://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='RFC5789' target='http://www.rfc-editor.org/info/rfc5789'>
<front>
<title>PATCH Method for HTTP</title>
<author initials='L.' surname='Dusseault' fullname='L. Dusseault'><organization /></author>
<author initials='J.' surname='Snell' fullname='J. Snell'><organization /></author>
<date year='2010' month='March' />
<abstract><t>Several applications extending the Hypertext Transfer Protocol (HTTP) require a feature to do partial resource modification.  The existing HTTP PUT method only allows a complete replacement of a document. This proposal adds a new HTTP method, PATCH, to modify an existing HTTP resource.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5789'/>
<seriesInfo name='DOI' value='10.17487/RFC5789'/>
</reference>



<reference  anchor='RFC7231' target='http://www.rfc-editor.org/info/rfc7231'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</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 defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t></abstract>
</front>
<seriesInfo name='RFC' value='7231'/>
<seriesInfo name='DOI' value='10.17487/RFC7231'/>
</reference>



<reference  anchor='RFC7252' target='http://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='RFC7641' target='http://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='RFC7959' target='http://www.rfc-editor.org/info/rfc7959'>
<front>
<title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby' role='editor'><organization /></author>
<date year='2016' month='August' />
<abstract><t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks.  Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates.  In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS).  These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t><t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of &quot;Block&quot; options for transferring multiple blocks of information from a resource representation in multiple request-response pairs.  In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers.  Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t><t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations.  Therefore, this specification updates RFC 7252.</t></abstract>
</front>
<seriesInfo name='RFC' value='7959'/>
<seriesInfo name='DOI' value='10.17487/RFC7959'/>
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor='RFC5323' target='http://www.rfc-editor.org/info/rfc5323'>
<front>
<title>Web Distributed Authoring and Versioning (WebDAV) SEARCH</title>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<author initials='S.' surname='Reddy' fullname='S. Reddy'><organization /></author>
<author initials='J.' surname='Davis' fullname='J. Davis'><organization /></author>
<author initials='A.' surname='Babich' fullname='A. Babich'><organization /></author>
<date year='2008' month='November' />
<abstract><t>This document specifies a set of methods, headers, and properties composing Web Distributed Authoring and Versioning (WebDAV) SEARCH, an application of the HTTP/1.1 protocol to efficiently search for DAV resources based upon a set of client-supplied criteria.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5323'/>
<seriesInfo name='DOI' value='10.17487/RFC5323'/>
</reference>



<reference  anchor='RFC6902' target='http://www.rfc-editor.org/info/rfc6902'>
<front>
<title>JavaScript Object Notation (JSON) Patch</title>
<author initials='P.' surname='Bryan' fullname='P. Bryan' role='editor'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham' role='editor'><organization /></author>
<date year='2013' month='April' />
<abstract><t>JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JavaScript Object Notation (JSON) document; it is suitable for use with the HTTP PATCH method. The &quot;application/json-patch+json&quot; media type is used to identify such patch documents.</t></abstract>
</front>
<seriesInfo name='RFC' value='6902'/>
<seriesInfo name='DOI' value='10.17487/RFC6902'/>
</reference>



<reference  anchor='RFC7159' target='http://www.rfc-editor.org/info/rfc7159'>
<front>
<title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
<author initials='T.' surname='Bray' fullname='T. Bray' role='editor'><organization /></author>
<date year='2014' month='March' />
<abstract><t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.</t><t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t></abstract>
</front>
<seriesInfo name='RFC' value='7159'/>
<seriesInfo name='DOI' value='10.17487/RFC7159'/>
</reference>



<reference  anchor='RFC7396' target='http://www.rfc-editor.org/info/rfc7396'>
<front>
<title>JSON Merge Patch</title>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<author initials='J.' surname='Snell' fullname='J. Snell'><organization /></author>
<date year='2014' month='October' />
<abstract><t>This specification defines the JSON merge patch format and processing rules.  The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content.</t></abstract>
</front>
<seriesInfo name='RFC' value='7396'/>
<seriesInfo name='DOI' value='10.17487/RFC7396'/>
</reference>



<reference anchor='I-D.vanderstok-core-comi'>
<front>
<title>CoAP Management Interface</title>

<author initials='P' surname='Stok' fullname='Peter Van der Stok'>
    <organization />
</author>

<author initials='A' surname='Bierman' fullname='Andy Bierman'>
    <organization />
</author>

<author initials='M' surname='Veillette' fullname='Michel Veillette'>
    <organization />
</author>

<author initials='A' surname='Pelov' fullname='Alexander Pelov'>
    <organization />
</author>

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

<abstract><t>This document describes a network management interface for constrained devices and networks, called CoAP Management Interface (CoMI).  The Constrained Application Protocol (CoAP) is used to access data resources specified in YANG, or SMIv2 converted to YANG. CoMI uses the YANG to CBOR mapping and converts YANG identifier strings to numeric identifiers for payload size reduction.  CoMI extends the set of YANG based protocols NETCONF and RESTCONF with the capability to manage constrained devices and networks.</t></abstract>

</front>

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



<reference anchor='I-D.hartke-core-apps'>
<front>
<title>CoRE Application Descriptions</title>

<author initials='K' surname='Hartke' fullname='Klaus Hartke'>
    <organization />
</author>

<date month='October' day='29' year='2016' />

<abstract><t>The interfaces of RESTful, hypertext-driven applications consist of reusable components such as Internet media types and link relation types.  This document defines a simple standard that application designers can use to describe the interface of their application in a structured way so that other parties can develop interoperable clients and servers or reuse the components in their own applications.</t></abstract>

</front>

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



<reference anchor='I-D.snell-search-method'>
<front>
<title>HTTP SEARCH Method</title>

<author initials='J' surname='Reschke' fullname='Julian Reschke'>
    <organization />
</author>

<author initials='A' surname='Malhotra' fullname='Ashok Malhotra'>
    <organization />
</author>

<author initials='J' surname='Snell' fullname='James Snell'>
    <organization />
</author>

<date month='April' day='10' year='2015' />

<abstract><t>This specification updates the definition and semantics of the HTTP SEARCH request method previously defined by [RFC5323].</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-snell-search-method-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-snell-search-method-00.txt' />
</reference>




    </references>


<section numbered="no" anchor="acknowledgements" title="Acknowledgements">

<t>Klaus Hartke has pointed out some essential differences between CoAP and
HTTP concerning PATCH, and found a number of problems in an earlier version
of <xref target="fetch"/>. We are grateful for discussions with Christian Amsuss,
Andy Bierman, Timothy Carey, Paul
Duffy, Matthias Kovatsch, Michel Veillette, Michael Verschoor, Thomas Watteyne,
and Gengyu Wei.  Christian Groves provided detailed
comments during the Working-Group Last Call, and Christer Holmberg’s
Gen-ART review provided some further editorial improvement.
Further last-call reviews were provided by Sheng Jiang and Phillip
Hallam-Baker.
As usual, the IESG had some very good reviews, we would like to
specifically call out those by Alexey Melnikov (responsible AD) and
Alissa Cooper.</t>

<!--  LocalWords:  atomicity iPATCH idempotence cacheable varyingly
 -->
<!--  LocalWords:  idempotency Unprocessable
 -->

</section>


  </back>

<!-- ##markdown-source:
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
fPrk4ntLZOnGcHLTR0ju7LSYvQNhzmbhLRP8MxprpN/DzX9/UNXoqPm3VUFW
5Uc+/YPLqLx3Vs+C4qVgVo6akr1ibdgsJl0lhHjOnCH17JoqvI1jpP5wzy/A
isfma+mwTV42UuJ1w7Jeww6gnN5PDuBPUqhcogaC3SCgQny9gW4yeXTZwL+k
wc7WLf0yMmfVfGsflvzG35G9KNc1zoF8RENRUPCq6Ffmcb9Y0OfnRUfMSUv/
t/qKtCuOOX1ezi7dyv7Jof27wzZFXCn4UkN31HVDQ17Wa3rqJ3R2bCsnL6b4
wVXLbU8wl2TqI1A/NPUVb1LSFhIfLhtPOjuPrqaenjOmh/qNfYb9Ro+IzIJM
GZOQ9WO9AjqXX7Y4G2x89hrR8VVJbmqYhem30DdCiKIDHUl9ARzJifgXRkRu
klEQJDQujkXq8pyEe2n/ldYj50e/uiT0lBvzIz1VrMcPi3fYcXXWyoG/I+XU
8x+IrxQW3myxrOu5n2TEZ1lwuVfemVCb7OAtBkiSCMh4EBBnK/eetNpzt6rK
d/WVPVRR45TV2WP2iMwZ6Z8WuXLklUgq/ut/IbHgrTurn/DqklOb7Anz7w1K
spLhCOP46kZjx+P/tm+gdH9E7lbyE/8bQuFGyAl9AAA=

-->

</rfc>

