<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-li-coap-extensions-a2d-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="CoAP Task Resources">CoAP Extensions for Asynchronous Task Resources</title>
    <seriesInfo name="Internet-Draft" value="draft-li-coap-extensions-a2d-00"/>
    <author initials="L." surname="Li" fullname="Linzhe Li">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <code>100094</code>
          <country>China</country>
        </postal>
        <email>lilz@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="Y." surname="Cui" fullname="Yong Cui">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <region>Beijing</region>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>cuiyong@tsinghua.edu.cn</email>
        <uri>http://www.cuiyong.net/</uri>
      </address>
    </author>
    <date year="2026" month="June" day="18"/>
    <area>WIT</area>
    <workgroup>CORE Working Group</workgroup>
    <keyword>CoAP</keyword>
    <keyword>Task Resource</keyword>
    <keyword>Observe</keyword>
    <keyword>CBOR</keyword>
    <abstract>
      <?line 57?>

<t>Many CoAP deployments need to start operations that cannot be completed within
one request/response exchange.  Existing deployments commonly model these
operations with application-specific resources, payload formats, and polling or
notification conventions.  This makes clients, gateways, and proxies unable to
interoperate across implementations that expose otherwise similar long-running
operations.</t>
      <t>This document defines a CoAP task-resource pattern for asynchronous operations.
It specifies a small set of CoAP Options and a CBOR status representation that
allow a server to create a temporary task resource, allow a client to monitor,
update, or cancel that task using existing CoAP methods, and allow an Observe
relationship to be filtered in a predictable way.  Autonomous control agents are
one motivating use case, but the mechanisms are intended to be generally usable
for constrained applications that need interoperable task orchestration.</t>
    </abstract>
  </front>
  <middle>
    <?line 74?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> provides a RESTful
interaction model for constrained nodes and constrained networks.  Many CoAP
resources can be read or modified with a single request and response.  Other
operations, however, are inherently asynchronous: firmware installation,
actuator motion, multi-resource configuration, diagnostics, commissioning, and
closed-loop automation may continue after the initial request has been accepted.</t>
      <t>In current deployments, such long-running operations are often represented in an
application-specific manner.  One server may return a proprietary job URI in the
payload, another may require repeated polling of the original resource, and
another may use Observe <xref target="RFC7641"/> with implementation-specific state fields.
These patterns work within a single application profile, but they do not provide
common behavior for generic CoAP clients, gateways, cross-proxies, management
systems, or resource-constrained servers that need to expose multiple kinds of
long-running operations.</t>
      <t>The lack of a common model creates several interoperability problems:</t>
      <ul spacing="normal">
        <li>
          <t>A client has no standard way to discover the resource that represents an
accepted operation.</t>
        </li>
        <li>
          <t>A client has no common state vocabulary for deciding whether an accepted
operation is still pending, active, completed, failed, aborted, or rejected.</t>
        </li>
        <li>
          <t>Gateways and intermediaries cannot recognize task-related traffic without
parsing application payloads.</t>
        </li>
        <li>
          <t>Observe notifications for progress or state changes can produce excessive
traffic when clients only need coarse progress updates or minimum notification
intervals.</t>
        </li>
        <li>
          <t>Multi-resource operations have no common request-level indication of whether
sub-operations are intended to be atomic, ordered, or independently applied.</t>
        </li>
      </ul>
      <t>These are protocol interoperability issues rather than only application design
issues.  They affect common CoAP behavior across payload formats and deployment
profiles.  This document therefore specifies a small CoAP extension for
asynchronous task resources.  It preserves the CoAP REST model: task creation is
performed with a request to an application resource, the server returns an
addressable task resource, and the task is then monitored, modified, or canceled
with existing CoAP methods.</t>
      <t>Autonomous AI agents provide a useful stress case for this work because they can
produce multi-step, non-instantaneous plans for constrained devices.  However,
the wire image defined here is not specific to AI.  A conventional management
client, scheduler, digital twin, or automation controller can use the same task
resource model.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as
shown here.</t>
      <dl>
        <dt>Task:</dt>
        <dd>
          <t>An asynchronous operation accepted by a CoAP server whose execution continues
after the initial request/response exchange.</t>
        </dd>
        <dt>Task Resource:</dt>
        <dd>
          <t>A CoAP resource that represents one task instance.  It exposes the task state
and may allow task update or cancellation.</t>
        </dd>
        <dt>Task Initiator:</dt>
        <dd>
          <t>A CoAP client that requests creation of a task.  The initiator can be a
management client, automation controller, scheduler, or autonomous agent.</t>
        </dd>
        <dt>Executor:</dt>
        <dd>
          <t>A CoAP server that creates and executes a task resource.</t>
        </dd>
        <dt>Progress Link:</dt>
        <dd>
          <t>A link from the response to the task resource that was created for an
accepted asynchronous operation.</t>
        </dd>
        <dt>Expected Effect:</dt>
        <dd>
          <t>An optional assertion supplied by the task initiator describing the intended
effect of the operation.  This document defines only the CoAP option carriage;
the semantics of the assertion are application-profile specific.</t>
        </dd>
      </dl>
    </section>
    <section anchor="scope">
      <name>Scope</name>
      <t>This document specifies:</t>
      <ul spacing="normal">
        <li>
          <t>the lifecycle of a CoAP task resource;</t>
        </li>
        <li>
          <t>CoAP Options that identify task-control behavior and provide a link to a task
resource;</t>
        </li>
        <li>
          <t>use of existing CoAP methods for monitoring, update, and cancellation;</t>
        </li>
        <li>
          <t>an Observe filter option for reducing task-state notification traffic; and</t>
        </li>
        <li>
          <t>a CBOR status representation for task resources.</t>
        </li>
      </ul>
      <t>This document does not define a general intent language, a semantic safety
model, or an authorization framework for autonomous agents.  Those topics are
expected to be handled by application profiles or by other IETF work.  This
document also does not change the base CoAP message layer, token processing, or
retransmission behavior.</t>
    </section>
    <section anchor="task-lifecycle">
      <name>Task Lifecycle</name>
      <t>A task resource represents an operation that has been accepted for asynchronous
processing.  The task state is represented by the state machine below.</t>
      <artwork><![CDATA[
    +---------+       Rejection
    | Pending | -------------------------> [ REJECTED ]
    +---------+
        |
        | Accepted for execution
        v
    +---------+       Cancellation
    | Active  | -------------------------> [ ABORTED ]
    +---------+
        |
        | Execution finishes
        v
  +--------------+
  |  Completed?  | -- Yes ---------------> [ COMPLETED ]
  +--------------+
        |
        | No
        v
    [ FAILED ]

                 Figure 1: Task Lifecycle
]]></artwork>
      <t>The state values are:</t>
      <dl>
        <dt>PENDING:</dt>
        <dd>
          <t>The task has been received and a task resource exists, but execution has not
yet started.</t>
        </dd>
        <dt>ACTIVE:</dt>
        <dd>
          <t>The task is executing.</t>
        </dd>
        <dt>COMPLETED:</dt>
        <dd>
          <t>The task completed successfully.</t>
        </dd>
        <dt>FAILED:</dt>
        <dd>
          <t>The task terminated without successful completion.</t>
        </dd>
        <dt>ABORTED:</dt>
        <dd>
          <t>The task was canceled before completion.</t>
        </dd>
        <dt>REJECTED:</dt>
        <dd>
          <t>The task was not accepted for execution, for example because of invalid
parameters, conflicting state, missing authorization, or a profile-specific
safety policy.</t>
        </dd>
      </dl>
      <t>An Executor SHOULD keep a terminal task resource available long enough for the
Task Initiator to retrieve the final state.  The retention time is deployment
specific.  After the retention time expires, the server MAY remove the task
resource and respond to later requests with 4.04 (Not Found).</t>
    </section>
    <section anchor="coap-options">
      <name>CoAP Options</name>
      <t>This document defines the following CoAP Options.  The option numbers are
temporary until IANA assignment.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="right">No.</th>
            <th align="left">C/E</th>
            <th align="left">U/N</th>
            <th align="left">R</th>
            <th align="left">Format</th>
            <th align="right">Length</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Expected-Effect</td>
            <td align="right">TBD1</td>
            <td align="left">E</td>
            <td align="left">U</td>
            <td align="left">-</td>
            <td align="left">opaque</td>
            <td align="right">0-1034</td>
          </tr>
          <tr>
            <td align="left">Batch-Control</td>
            <td align="right">TBD2</td>
            <td align="left">E</td>
            <td align="left">U</td>
            <td align="left">-</td>
            <td align="left">uint</td>
            <td align="right">0-2</td>
          </tr>
          <tr>
            <td align="left">Observe-Filter</td>
            <td align="right">TBD3</td>
            <td align="left">E</td>
            <td align="left">U</td>
            <td align="left">-</td>
            <td align="left">opaque</td>
            <td align="right">1-1034</td>
          </tr>
          <tr>
            <td align="left">Progress-Link</td>
            <td align="right">TBD4</td>
            <td align="left">E</td>
            <td align="left">U</td>
            <td align="left">-</td>
            <td align="left">string</td>
            <td align="right">1-255</td>
          </tr>
        </tbody>
      </table>
      <t>The options are elective.  A server that does not understand one of these
options processes the request according to normal CoAP option processing.  An
application profile MAY define stricter behavior when support for a specific
option is required.</t>
      <t>The options are marked unsafe-to-forward because they can affect operation
execution, notification generation, or interpretation of the response.  A proxy
that does not understand these options MUST follow the unsafe option processing
rules in <xref target="RFC7252"/>.</t>
      <section anchor="expected-effect-option">
        <name>Expected-Effect Option</name>
        <t>The Expected-Effect Option carries an application-profile-specific assertion
about the intended effect of a request.  The option value is opaque to the CoAP
layer.  Profiles MAY define the value as a CBOR item, a constrained expression,
or another compact representation.</t>
        <t>If a server understands the option and the applicable application profile, it
MUST evaluate the assertion before transitioning the task to ACTIVE.  If the
assertion is syntactically invalid for the profile, the server SHOULD respond
with 4.00 (Bad Request).  If the assertion is valid but cannot be satisfied
because of current resource state or policy, the server SHOULD respond with 4.09
(Conflict) or create a task resource whose state is REJECTED.</t>
        <t>The Expected-Effect Option is intended to make the expected outcome visible at
the protocol layer without requiring intermediaries to parse the request
payload.  This document does not standardize the assertion language.</t>
      </section>
      <section anchor="batch-control-option">
        <name>Batch-Control Option</name>
        <t>The Batch-Control Option indicates how sub-operations contained in the request
payload are intended to be executed.  The option value is a bit mask:</t>
        <ul spacing="normal">
          <li>
            <t>0x01 (Atomic): the server is requested to apply the sub-operations as an
atomic unit.  If one sub-operation fails, the server rolls back all
sub-operations for which rollback is supported.</t>
          </li>
          <li>
            <t>0x02 (Sequential): the server is requested to execute the sub-operations in
the order in which they appear in the payload.</t>
          </li>
        </ul>
        <t>If the server cannot provide the requested behavior, it MUST reject the request
with 4.00 (Bad Request) or 4.09 (Conflict), unless an application profile
defines different behavior.  A server MUST NOT silently treat an Atomic request
as non-atomic.</t>
      </section>
      <section anchor="observe-filter-option">
        <name>Observe-Filter Option</name>
        <t>The Observe-Filter Option is used with the Observe Option <xref target="RFC7641"/> to reduce
notification traffic.  The option value is a CBOR map:</t>
        <artwork><![CDATA[
Observe-Filter = {
  ? 1 => uint,  ; minimum notification interval in milliseconds
  ? 2 => uint,  ; minimum progress delta in percentage points
}
]]></artwork>
        <t>When a server accepts an Observe registration that includes Observe-Filter, it
SHOULD suppress notifications that do not satisfy the filter.  A notification
that reports a terminal state MUST NOT be suppressed by the filter.</t>
        <t>If the server does not support the supplied filter, it SHOULD reject the Observe
registration with 4.00 (Bad Request).  If the Observe-Filter Option is ignored
because the server does not implement this specification, normal elective option
processing applies.</t>
      </section>
      <section anchor="progress-link-option">
        <name>Progress-Link Option</name>
        <t>The Progress-Link Option is returned in a successful response when a server has
created a task resource for an accepted asynchronous operation.  The option
value is a URI-reference encoded as a UTF-8 string.  The value identifies the
task resource.</t>
        <t>A server SHOULD use Location-Path and Location-Query when they are sufficient to
identify the task resource.  Progress-Link is useful when a compact single
option or an absolute URI-reference is needed by a profile.  If both
Progress-Link and Location-Path/Location-Query are present, they MUST identify
the same task resource.</t>
      </section>
    </section>
    <section anchor="task-resource-mapping">
      <name>Task-Resource Mapping</name>
      <t>To create a task, a Task Initiator sends a request to an application resource.
For example, a client can send a POST request to <tt>/actions/climate</tt> or a FETCH
or PATCH request <xref target="RFC8132"/> to a configuration resource.  If the Executor can
complete the operation immediately, it MAY return the final response directly.
If the Executor accepts the operation for asynchronous processing, it SHOULD
return 2.02 (Accepted) and provide a link to the task resource.</t>
      <t>The task resource is then controlled with existing CoAP methods:</t>
      <dl>
        <dt>GET:</dt>
        <dd>
          <t>Retrieves the current task status.  GET MAY be used with Observe to receive
task-state notifications.</t>
        </dd>
        <dt>FETCH:</dt>
        <dd>
          <t>Retrieves selected task-state information when supported by the task resource.</t>
        </dd>
        <dt>PATCH or iPATCH:</dt>
        <dd>
          <t>Requests an update to mutable task parameters when the task profile allows
in-flight modification.</t>
        </dd>
        <dt>DELETE:</dt>
        <dd>
          <t>Requests cancellation of the task.  A successful cancellation causes the task
to transition to ABORTED.  If the task has already reached a terminal state,
the server SHOULD return the current terminal state or a response code
appropriate to the application profile.</t>
        </dd>
      </dl>
      <t>The task resource URI is an implementation detail of the Executor.  Clients MUST
NOT infer task semantics from the URI path alone.</t>
    </section>
    <section anchor="protocol-flow">
      <name>Protocol Flow</name>
      <t>The following example shows an asynchronous operation using a task resource.</t>
      <artwork><![CDATA[
Task Initiator                              Executor
      |                                        |
      | POST /actions/climate                 |
      | Content-Format: application/cbor      |
      | Expected-Effect: h'a1...'             |
      | Batch-Control: 0x03                   |
      |--------------------------------------->|
      |                                        | Validate request
      |                                        | Create /tasks/89
      |                                        |
      | 2.02 Accepted                         |
      | Location-Path: "tasks"                |
      | Location-Path: "89"                   |
      | Progress-Link: "/tasks/89"            |
      |<---------------------------------------|
      |                                        |
      | GET /tasks/89                         |
      | Observe: 0                            |
      | Observe-Filter: {1: 5000, 2: 20}      |
      |--------------------------------------->|
      |                                        |
      | 2.05 Content                          |
      | Observe: n                            |
      | Payload: state=ACTIVE, progress=0     |
      |<---------------------------------------|
      |                                        |
      | 2.05 Content                          |
      | Observe: n+1                          |
      | Payload: state=ACTIVE, progress=20    |
      |<---------------------------------------|
      |                                        |
      | PATCH /tasks/89                       |
      | Payload: update parameters            |
      |--------------------------------------->|
      |                                        |
      | 2.04 Changed                          |
      |<---------------------------------------|
      |                                        |
      | 2.05 Content                          |
      | Observe: n+2                          |
      | Payload: state=COMPLETED, progress=100|
      |<---------------------------------------|
]]></artwork>
    </section>
    <section anchor="payload-formats">
      <name>Payload Formats</name>
      <t>Task resources SHOULD use CBOR <xref target="RFC8949"/> for compact status representation.
This document defines the following CDDL <xref target="RFC8610"/> structures.</t>
      <section anchor="task-creation-payload">
        <name>Task Creation Payload</name>
        <t>Application profiles define the payload used to create a task.  When a profile
uses a generic multi-operation payload, it MAY use the following structure:</t>
        <artwork><![CDATA[
Task-Request = {
  ? 1 => uint,              ; client transaction identifier
    2 => [ + Sub-Operation ]
}

Sub-Operation = {
  1 => tstr,                ; target sub-resource path
  2 => uint / tstr / bstr   ; target value or profile-defined value
}
]]></artwork>
      </section>
      <section anchor="task-status-payload">
        <name>Task Status Payload</name>
        <t>The task resource status payload is:</t>
        <artwork><![CDATA[
Task-Status = {
  1 => uint,                ; task state
  ? 2 => uint,              ; progress percentage, 0..100
  ? 3 => uint,              ; estimated seconds to completion
  ? 4 => tstr,              ; diagnostic text
  ? 5 => [ + Sub-Result ]   ; per-sub-operation result
}

Sub-Result = {
  1 => tstr,                ; sub-resource path
  2 => uint                 ; CoAP response code encoded as in RFC 7252
}
]]></artwork>
        <t>The task state values are:</t>
        <table>
          <thead>
            <tr>
              <th align="right">Value</th>
              <th align="left">State</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0</td>
              <td align="left">PENDING</td>
            </tr>
            <tr>
              <td align="right">1</td>
              <td align="left">ACTIVE</td>
            </tr>
            <tr>
              <td align="right">2</td>
              <td align="left">COMPLETED</td>
            </tr>
            <tr>
              <td align="right">3</td>
              <td align="left">FAILED</td>
            </tr>
            <tr>
              <td align="right">4</td>
              <td align="left">ABORTED</td>
            </tr>
            <tr>
              <td align="right">5</td>
              <td align="left">REJECTED</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="intermediary-considerations">
      <name>Intermediary Considerations</name>
      <t>Intermediaries that understand this specification can recognize the creation of
task resources and the subsequent control traffic without parsing
application-specific payloads.  This can be useful for request routing, traffic
prioritization, diagnostics, and policy enforcement in constrained deployments.</t>
      <t>Intermediaries MUST NOT change task-control options unless explicitly
configured to do so by the relevant application profile and security policy.
When OSCORE <xref target="RFC8613"/> protects an option end-to-end, intermediaries cannot
inspect or modify that option.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Task resources can cause physical, operational, or management actions to
continue after the initial request has completed.  Authorization therefore needs
to cover both task creation and subsequent operations on the task resource.
Deployments SHOULD use suitable CoAP security mechanisms, such as DTLS, OSCORE
<xref target="RFC8613"/>, and ACE <xref target="RFC9200"/>, according to their threat model.</t>
      <t>A Task Initiator that is authorized to create a task is not necessarily
authorized to observe, modify, or cancel all task resources.  Servers SHOULD
apply authorization checks independently to task creation, GET/Observe, PATCH,
FETCH, and DELETE.</t>
      <t>Observe-Filter can reduce notification traffic, but it can also hide
intermediate progress information from a client.  Servers MUST NOT suppress
terminal-state notifications because of Observe-Filter.</t>
      <t>Expected-Effect can help a server or profile bind a request to an asserted
outcome.  Because this document does not define the assertion language, servers
MUST treat the option according to the application profile that defines that
language.  A server MUST NOT assume that the mere presence of Expected-Effect is
sufficient for safety.</t>
      <t>Task resources can reveal operational information, such as device activity,
failure causes, or expected completion time.  Access to task status therefore
needs the same care as access to the underlying application resource.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>IANA is requested to allocate the following entries in the "CoAP Option Numbers"
registry:</t>
      <table>
        <thead>
          <tr>
            <th align="right">Number</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD1</td>
            <td align="left">Expected-Effect</td>
            <td align="left">RFC-to-be</td>
          </tr>
          <tr>
            <td align="right">TBD2</td>
            <td align="left">Batch-Control</td>
            <td align="left">RFC-to-be</td>
          </tr>
          <tr>
            <td align="right">TBD3</td>
            <td align="left">Observe-Filter</td>
            <td align="left">RFC-to-be</td>
          </tr>
          <tr>
            <td align="right">TBD4</td>
            <td align="left">Progress-Link</td>
            <td align="left">RFC-to-be</td>
          </tr>
        </tbody>
      </table>
      <t>The option properties are defined in <xref target="coap-options"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <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">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <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 "observe" 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="RFC8132">
          <front>
            <title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
            <date month="April" year="2017"/>
            <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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <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 the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
      </references>
    </references>
    <?line 510?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Linbo Hui, Yannan Hu, Wenyong Wang, Shuisong Hu, Haoran Luo, and
Linzhe Li for their contribution to this draft.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9Vca3PbRpb93r+iy/kwyYSkHpYzMb2ZGVqWY23JlkaWJ5VN
pXZAoCl2BAIcPCQztvPb99x7uxsNkHKc1G6qVlWJKQLovn2f5z6g8Xis6iYp
sv9O8rIwU91UrVF2XfGnujnc33+8f6jSpJnquslU3c5Xtq5tWTSbNW4/Pbl6
rpLKJFP93emVurue6uPzyxP9XVnd2OJaf1uV7VqprEyLZIX7sypZNOPcjtMy
WY/N28YUtFg9Tg6z8f6+Uo1tctx3XM4u9Em4rBdlpWf1pkiXVVmUba2vkvpG
X5q6bKvU1CqZzytz654bXMuTAmSZQt3cTZXWY76JP/Ru5G/O57WpbuXz8dPz
S5W0zbKspmqsqxKE4YIt6qk+m+gzi1/kVGe2+Hlp5Juywmb/tSyL6+s2KdK2
0GfJvKySpqw2uFw3lTENrZPaZjPVT439CYzC75W5xlH5Splh0YN98P6If22L
psK9x0tbJPhivSRR4YNZJTaf6tzmP//95+s0T+YTk7WTtBiS+/1EH7cdvd+D
OvcFk3tVg4Rlm+g3hb01VQ3KtkntSIyI7kj9+pNITVu7weZ/b9yOnl6t28pO
9bJp1tO9vbu7u4m7c1KYZk8pVZTVKmlAHS12+fz48ODgsfv4l8NHh/7jV0cH
7uPXBw8Pw8e/HPmPXx3s+4+Pj7CCLRaDlXHLQ/fxMdR/qtR4PNbJHOxI0kap
l0mxET3LzDovNytTNLUujMl0U4JpSdXocm0gcdbcZpk0Ok2Komz03IBDq3Vu
Gtx8ZxswSYE/4Ou/W1M3e5Wp13jGaPM2XUJrzUTDCGzdkCnFu2GVVVnkG70C
/3PsYWqjok1pbZ2s17lN+ZtxvTapXdgUWzmzGOl1ssnLJNPCAHwBN6DXZZ7T
bmUFljf0CC+AHYtbbE2rg6irpa31KrkxICW3RNJIXyeNuUs2fp2qfGtxuS2S
eW7AGXC6MZXQaHSSVmVda0vMoCPFzDJv1yV4UOJU1Z3Fp9qubJ5UGh7qely1
RUG61512ohTTAyfT0lrg1MIW2DsRMTWw8rE/N07dgI6CPUoSe5R4wdNGO47x
MvUqyXNdGwh2IWuer4VgOmrCnoIk32CZyqyxlz8Sn0jh6fKO1iHfUpGapHCZ
xAbdmNUa3qHaMJlBPGCie0b4S89A4hZeZKTadYaHR5ARKVbKCgC+8QItGRZY
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

-->

</rfc>
