<?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-01" 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-01"/>
    <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 58?>

<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 task-state
and task-progress observations to reuse the Conditional Query Parameters
defined for CoAP Observe <xref target="I-D.ietf-core-conditional-attributes"/>.  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 77?>

<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.  Existing Conditional Query Parameters for CoAP Observe can be
reused for this purpose when task state is exposed as suitable observable
resources.</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>use of Conditional Query Parameters for CoAP Observe with task-state and
task-progress resources; 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">Progress-Link</td>
            <td align="right">TBD3</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 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="use-of-conditional-attributes-with-task-resources">
        <name>Use of Conditional Attributes with Task Resources</name>
        <t>This document does not define a new CoAP Option for filtering Observe
notifications.  Task resources reuse the Conditional Query Parameters defined
for CoAP Observe in <xref target="I-D.ietf-core-conditional-attributes"/>.</t>
        <t>Task resources that are Observable SHOULD support the Conditional Query
Parameters when they expose task information as scalar resources.  For example,
a client that observes task progress and wants to receive a notification only
when the progress changes by at least 20 percentage points, and no more
frequently than once every 5 seconds, can use:</t>
        <artwork><![CDATA[
GET /tasks/89/progress?c.st=20&c.pmin=5
Observe: 0
]]></artwork>
        <t>A client that wants a maximum interval between progress notifications can also
use <tt>c.pmax</tt>, for example:</t>
        <artwork><![CDATA[
GET /tasks/89/progress?c.st=20&c.pmin=5&c.pmax=60
Observe: 0
]]></artwork>
        <t>The task progress value is a scalar numeric value in the range 0..100 and is
therefore suitable for use with Conditional Query Parameters such as <tt>c.st</tt>,
<tt>c.gt</tt>, <tt>c.lt</tt>, <tt>c.pmin</tt>, and <tt>c.pmax</tt>.</t>
        <t>Task state is an enumerated value.  Application profiles that expose task state
as a conditionally observable value SHOULD define whether the state is observed
as a numeric scalar value or as a separate state resource.  A client that needs
to observe every state transition SHOULD observe the task-state resource without
conditional notification parameters, or use parameters that are guaranteed by
the profile to report each state transition.</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>
      <t>An Executor MAY expose task status as a compound CBOR representation at the
task resource URI.  For use with Conditional Query Parameters, the Executor
SHOULD also expose scalar projections of task status, such as:</t>
      <artwork><![CDATA[
/tasks/{id}/state
/tasks/{id}/progress
/tasks/{id}/eta
]]></artwork>
      <t>The <tt>/progress</tt> resource is a numeric value from 0 to 100.  The <tt>/state</tt>
resource is a numeric task-state value defined by this document.  The <tt>/eta</tt>
resource, when present, is the estimated number of seconds to completion.</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/progress?c.st=20       |
      |   &c.pmin=5                          |
      | Observe: 0                            |
      |--------------------------------------->|
      |                                        |
      | 2.05 Content                          |
      | Observe: n                            |
      | Payload: 0                            |
      |<---------------------------------------|
      |                                        |
      | 2.05 Content                          |
      | Observe: n+1                          |
      | Payload: 20                           |
      |<---------------------------------------|
      |                                        |
      | PATCH /tasks/89                       |
      | Payload: update parameters            |
      |--------------------------------------->|
      |                                        |
      | 2.04 Changed                          |
      |<---------------------------------------|
      |                                        |
      | 2.05 Content                          |
      | Observe: n+2                          |
      | Payload: 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 anchor="scalar-projection-resources">
        <name>Scalar Projection Resources</name>
        <t>The compound <tt>Task-Status</tt> representation is useful when a client needs the
complete task state in one response.  It is not intended to define field-level
filtering of a CBOR map.</t>
        <t>When a server supports conditional observation of task information, it SHOULD
expose scalar projection resources for the values to which Conditional Query
Parameters are applied.  In particular, <tt>/tasks/{id}/progress</tt> SHOULD return the
progress value alone, and <tt>/tasks/{id}/state</tt> SHOULD return the numeric task
state value alone.  Application profiles MAY define additional projection
resources.</t>
      </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>Conditional Query Parameters can reduce notification traffic, but they can also
hide intermediate progress information from a client.  A client that needs every
state transition SHOULD observe the task-state resource without conditional
notification parameters, or use profile-defined parameters that preserve every
state transition.  Servers SHOULD ensure that terminal-state information remains
available from the task resource after completion, failure, cancellation, or
rejection.</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">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>
      <t>This document does not request allocation of a CoAP Option for Observe
filtering.  Task resources reuse the Conditional Query Parameters defined in
<xref target="I-D.ietf-core-conditional-attributes"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-core-conditional-attributes">
          <front>
            <title>Conditional Query Parameters for CoAP Observe</title>
            <author fullname="Bill Silverajan" initials="B." surname="Silverajan">
              <organization>Tampere University</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Alan Soloway" initials="A." surname="Soloway">
              <organization>Qualcomm Technologies, Inc.</organization>
            </author>
            <date day="16" month="March" year="2026"/>
            <abstract>
              <t>   This specification defines Conditional Notification and Control Query
   Parameters compatible with CoAP Observe (RFC7641).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-conditional-attributes-12"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="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 563?>

<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:
H4sIAAAAAAAAA9Vc+3PbxrX+ff+KHXumTRqSethOY+WmqSzLiTqypcpyM7md
zjUILkXUIMDiIZmx3b/9fuexiwVIKXI7tzNXM7YoENg9e/Y8vvNYjMdjUzdJ
MfufJC8Ld2CbqnUmW1X8qW72d3ef7u6bNGkObN3MTN1Ol1ldZ2XRrFe4/eT4
8oVJKpcc2J9OLs3N1YE9Ors4tj+V1busuLI/VGW7MmZWpkWyxP2zKpk34zwb
p2WyGrv3jStosHqc7M/Gu3vGNFmT476j8vDcHoev7bys7GG9LtJFVRZlW9vL
pH5nL1xdtlXqapNMp5W71ucG3+VJAbJcYd7dHBhrx3wTf+jdyFfOprWrruXz
0bOzC5O0zaKsDszYViUIwxdZUR/Y04k9zfCHrOo0K35ZOLlSVpjsvxdlcXXV
JkXaFvY0mZZV0pTVGl/XTeVcQ+OkWbM+sM9c9ncwCn9X7gpL5W/KGQbd2wXv
H/OfbdFUuPdokRUJLqwWtFX44JZJlh/YPMt/+eMvV2meTCdu1k7SYkjuzxN7
1Hb0/gzq9AKTe1mDhEWb2DdFdu2qGpRtktqRGBHdkfrNvUhN22yNyf/Y6Iye
XmvbKjuwi6ZZHezs3NzcTPTOSeGaHWNMUVbLpAF1NNjJ+Pkkc80cUlQ5/FfM
sgaEJfk4aZoqm7aNq+m+ixdH+3t7T/Xj7/ef7PuPXz/e04/f7D3aDx9//9h/
/Hpv1398+hgjZMU8pkBueaQfn0JNDowZj8c2mYJtSdoY8zIp1iKPM7fKy/XS
FU1tC+dmtinB3KRqbLlykAyW8GaRNDZNiqJs7NSBk8tV7hrcfJM1YKYBH8H/
f7SubnYqV6/wjLPufbqAdLuJhbJkdUMqF8+GUZZlka/tEvuUYw5XOxNNSmPb
ZLXKs5SvjOuVS7N5lmIqVZ+RXSXrvExmVhiACzAXdlXmOc1WVtiahh7hATBj
cY2paXQQdbnIartM3jmQkmdE0sheJY27SdZ+nKp8n+HrtkimuQNnwOnGVUKj
s0lalXVtM2IGLSlmlnu/KsGDEquqbjJ8qrNllieVhSW7GldtUZCMdqudGMP0
wBi1NBY4Nc8KzJ3INjWwBmO/bqy6AR0FW54ktjzxgCeNVY7xMPUyyXNbO2zs
XMY8WwnBtNSELQrtfINhKrfCXH5JvCKDp8sbGodsUEViksK0Ehts45YrWJFq
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
AA==

-->

</rfc>
