<?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.31 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-conditional-attributes-12" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="Conditional Query Parameters for CoAP Observe">Conditional Query Parameters for CoAP Observe</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-conditional-attributes-12"/>
    <author initials="B." surname="Silverajan" fullname="Bilhanan Silverajan">
      <organization>Tampere University</organization>
      <address>
        <postal>
          <street>Kalevantie 4</street>
          <city>Tampere</city>
          <code>33100</code>
          <country>Finland</country>
        </postal>
        <email>bilhanan.silverajan@tuni.fi</email>
      </address>
    </author>
    <author initials="M." surname="Koster" fullname="Michael Koster">
      <organization>Dogtiger Labs</organization>
      <address>
        <postal>
          <street>524 H Street</street>
          <city>Antioch, CA</city>
          <code>94509</code>
          <country>USA</country>
        </postal>
        <email>michaeljohnkoster@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Soloway" fullname="Alan Soloway">
      <organization>Qualcomm Technologies, Inc.</organization>
      <address>
        <postal>
          <street>5775 Morehouse Drive</street>
          <city>San Diego</city>
          <code>92121</code>
          <country>USA</country>
        </postal>
        <email>asoloway@qti.qualcomm.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="16"/>
    <area>Applications</area>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <?line 73?>

<t>This specification defines Conditional Notification and Control Query Parameters compatible with CoAP Observe (RFC7641).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-core-conditional-attributes/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        core Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/conditional-attributes"/>.</t>
    </note>
  </front>
  <middle>
    <?line 77?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>IETF Standards for Internet of Things (IoT) communication in constrained environments define the Constrained Application Protocol (CoAP) <xref target="RFC7252"/>, a RESTful application protocol, as well as a set of related information standards that may be used to represent machine data and machine metadata in REST interfaces.</t>
      <t>This specification defines Conditional Notification and Control Parameters for use with CoAP Observe <xref target="RFC7641"/>.</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.
<?line -6?>
      </t>
      <t>This specification requires readers to be familiar with all the terms and concepts that are discussed in <xref target="RFC7252"/> and <xref target="RFC7641"/>.  This specification makes use of the following additional terminology:</t>
      <dl>
        <dt>Notification Band:</dt>
        <dd>
          <t>A resource value range that  may be bounded by a minimum and maximum value or may be unbounded having either a minimum or maximum value.</t>
        </dd>
        <dt>"xs:boolean" and "xs:decimal" types:</dt>
        <dd>
          <t>Data types from XML Schema <xref target="W3C.REC-xmlschema-2-20041028"/>, used in this document to describe boolean and scalar values in CoAP resources. The "xs:" prefix notation is used solely for type indication and does not imply the use of XML or XML Schema in protocol encoding.</t>
        </dd>
      </dl>
    </section>
    <section anchor="conditional_parameters">
      <name>Conditional Query Parameters</name>
      <t>This specification defines conditional query parameters (or more simply, "conditional parameters" in this document) for use with CoRE Observe <xref target="RFC7641"/>. Conditional parameters provide fine-grained control of notification and synchronization of resource states. A CoAP client conveys conditional parameters as metadata using the query component of a CoAP URI. A conditional parameter can be represented as a "name=value" query parameter or simply a "name" without a value. A conditional parameter can be one of two kinds: A conditional notification parameter, or a conditional control parameter. Multiple conditional parameters in a query component are separated with an ampersand "&amp;". A resource marked as Observable in its link description SHOULD support these conditional parameters.</t>
      <t>This specification also defines conditional query parameters as parameters that apply to scalar and boolean values in CoAP resources. While complex data structures (e.g., SenML, CBOR arrays, or other structured formats) are commonly used in IoT systems, this document does not provide explicit guidance on how conditional parameters should interact with these formats.</t>
      <t>This specification assumes that there are finite quantization effects in the internal or external updates to the value representing the state of a resource; specifically, that a resource state may be updated at any time with any valid value. We therefore avoid any continuous-time assumptions in the description of the conditional parameters and instead use the phrase "sampled value" to refer to a member of a sequence of values that may be internally observed from the resource state over time.</t>
      <section anchor="overview">
        <name>Overview</name>
        <t>If a CoAP client is interested in obtaining all the state representations of a resource from a CoAP server as they change, the client is able to do so by using CoAP Observe. If a CoAP client is instead interested in receiving only state representations fulfilling certain constraints (such as a minimum/maximum value), it can do so by indicating conditional parameters as query parameters in its request to a CoAP server, when registering its interest in observing a resource.</t>
        <t>The usage of conditional attributes employs the notion of resource state projection. This is an idea that aligns with established practices employed by RESTful API designs that allow clients to retrieve specific representations or subsets of a resource’s data, enhancing efficiency and flexibility.</t>
        <t>In constrained environments, CoAP clients can employ resource state projections as a technique to reduce unnecessary data transfer in constrained environments. By using Observe with query parameters, the client requests the server to project a new state from the current resource representation and deliver only a subset of updates, based on the received requests. When a server receives a request containing conditional query parameters from a client, the server maintains a projected resource state separate from a resource state requested without conditional query parameters.</t>
        <t>The mechanism can be explained in the following subsections in terms of registration, operation and cancellation.</t>
      </section>
      <section anchor="registration">
        <name>Registration</name>
        <t>In this example, three CoAP endpoints are shown: Clients A and B are interested in obtaining updates to state representations describing the current CO2 level, provided by a CoAP Server.</t>
        <t>In <xref target="fig-reg-client-a"/>, Client A uses CoAP Observe to register its interest in receiving all updates to the CO2 resource state from the Server.</t>
        <figure anchor="fig-reg-client-a">
          <name>Client A registers and receives one notification of the current state and one state update.</name>
          <artwork><![CDATA[
ClientA         ClientB                   Server
   │               │                        │
   │               │                     ( CO2 )
   │ GET /CO2      │                        │
   │ Token: 0x42   │                        │
   │ Observe: 0    │                        │
   +───────────────┼───────────────────────>│
   │               │                        │
   │               │                        │
   │               │           2.05 Content │
   │               │            Token: 0x42 │
   │               │            Observe: 12 │
   │               │         Payload: "600" │
   │<──────────────┼────────────────────────+
   │               │                        │
   │               │                        │
   │               │           2.05 Content │
   │               │            Token: 0x42 │
   │               │            Observe: 23 │
   │               │         Payload: "800" │
   │<──────────────┼────────────────────────+
   │               │                        │

]]></artwork>
        </figure>
        <t>Client B, on the other hand is interested in receiving only a subset of updates from the Server. In <xref target="fig-reg-client-b"/>, Client B is depicted using CoAP Observe with a conditional parameter to register its interest in receiving specific updates to the C02 resource state from the Server. The Server provides a representation of the current state and creates and creates a new state projection registering Client B's interest.</t>
        <figure anchor="fig-reg-client-b">
          <name>Client B registers with conditional parameters, and receives one notification of the current state and a state projection is created.</name>
          <artwork><![CDATA[
ClientA         ClientB                   Server
   │               │                        │
   │               │                     ( CO2 )
   │               │                        │
   │               │                        │
   │               │ GET /CO2?c.gt=1000     │
   │               │ Token: 0x66            │
   │               │ Observe: 0             │
   │               +───────────────────────>│
   │               │                        │
   │               │           2.05 Content │
   │               │            Token: 0x66 │
   │               │            Observe: 20 │      Resource State
   │               │         Payload: "800" │        Projection
   │               │<───────────────────────+    ..................
   │               │                        +--->. /CO2?c.gt=1000 .
   │               │                        │    ..................
   │               │                        │             .
   │               │                        │             .
   │               │                        │             .

]]></artwork>
        </figure>
      </section>
      <section anchor="operation">
        <name>Operation</name>
        <t>In subsequent interactions for providing state updates, the Server will continue to provide all state updates to Client A, while Client B receives state updates fulfilling the conditions specified by the conditional parameter.</t>
        <figure anchor="fig-operation">
          <name>Clients A and B receiving C02 state updates from the Server, without and with conditional parameters, respectively.</name>
          <artwork><![CDATA[
ClientA         ClientB                   Server
   │               │                        │
   │               │                     ( CO2 )
   │               │                        │
   │               │                        │      Resource State
   │               │                        │        Projection
   │               │                        │    ..................
   │               │                        +--->. /CO2?c.gt=1000 .
   │               │                        │    ..................
   │               │                        │             .
   │               │           2.05 Content │             .
   │               │            Token: 0x42 │             .
   │               │            Observe: 29 │             .
   │               │        Payload: "1000" │             .
   │<──────────────┼────────────────────────+             .
   │               │                        │             .
   │               │           2.05 Content │             .
   │               │            Token: 0x66 │             .
   │               │            Observe: 23 │             .
   │               │        Payload: "1100" │             .
   │               │<───────────────────────┤-------------+
   │               │                        │             .
   │               │           2.05 Content │             .
   │               │            Token: 0x42 │             .
   │               │            Observe: 33 │             .
   │               │        Payload: "1100" │             .
   │<──────────────┼────────────────────────+             .
   │               │                        │             .

]]></artwork>
        </figure>
      </section>
      <section anchor="cancellation">
        <name>Cancellation</name>
        <t>A client that wishes to cancel an existing registration can do so in accordance with Section 3.6 of <xref target="RFC7641"/>. If a client wishes to explicitly cancel an existing registration by issuing a GET request, it MUST also additionally supply the original URI containing the conditional parameters that was conveyed to the server during the registration. This is depicted in <xref target="fig-cancellation"/> for Client B.</t>
        <figure anchor="fig-cancellation">
          <name>Client B explicitly cancelling an existing registration.</name>
          <artwork><![CDATA[
ClientA         ClientB                   Server
   │               │                        │
   │               │                     ( CO2 )
   │               │                        │
   │               │                        │      Resource State
   │               │                        │        Projection
   │               │                        │    ..................
   │               │                        +--->. /CO2?c.gt=1000 .
   │               │                        │    ..................
   │               │                        │             .
   │               │                        │             .
   │               │ GET /CO2?c.gt=1000     │             .
   │               │ Token: 0x66            │             .
   │               │ Observe: 1             │             .
   │               +────────────────────────┤------------>.             
   │               │                        │             .
   │               │                        │             .
   │               │           2.05 Content │             .
   │               │            Token: 0x66 │             .
   │               │         Payload: "900" │             .
   │               │<───────────────────────┤-------------+
   │               │                        │              
   │               │                        │              
   │               │                        │              

]]></artwork>
        </figure>
      </section>
      <section anchor="conditional-notification-parameters">
        <name>Conditional Notification Parameters</name>
        <t>Conditional Notification Parameters define the conditions that trigger a notification. Conditional Notification Parameters SHOULD be evaluated on all potential notifications from a resource, whether resulting from an internal server-driven sampling process or from external update requests to the server.</t>
        <t>The set of Conditional Notification Parameters defined here allows a client to control how often a notification is received and how much a representation state should change in order to trigger a notification. One or more Conditional Notification Parameters MAY be included in an Observe request.</t>
        <t>Conditional Notification Parameters are defined below:</t>
        <table anchor="notificationparameters">
          <name>Conditional Notification Parameters</name>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Name</th>
              <th align="left">Value Type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Greater Than</td>
              <td align="left">c.gt</td>
              <td align="left">xs:decimal</td>
            </tr>
            <tr>
              <td align="left">Less Than</td>
              <td align="left">c.lt</td>
              <td align="left">xs:decimal</td>
            </tr>
            <tr>
              <td align="left">Change Step</td>
              <td align="left">c.st</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Notification Band</td>
              <td align="left">c.band</td>
              <td align="left">(none)</td>
            </tr>
            <tr>
              <td align="left">Edge</td>
              <td align="left">c.edge</td>
              <td align="left">xs:boolean</td>
            </tr>
          </tbody>
        </table>
        <section anchor="gt">
          <name>Greater Than (c.gt)</name>
          <t>When present, Greater Than indicates the upper limit value the sampled value SHOULD cross before triggering a notification. A notification is sent whenever the sampled value crosses the specified upper limit value, relative to the last reported value, and the time for "c.pmin" has elapsed since the last notification. The sampled value is sent in the notification. If the value continues to rise, no notifications are generated as a result of "c.gt". If the value drops below the upper limit value then a notification is sent, subject again to the "c.pmin" time.</t>
          <t>The Greater Than parameter MUST be supported on resources with a scalar numeric value.</t>
        </section>
        <section anchor="lt">
          <name>Less Than (c.lt)</name>
          <t>When present, Less Than indicates the lower limit value the resource value SHOULD cross before triggering a notification. A notification is sent whenever the sampled value crosses the specified lower limit value, relative to the last reported value, and the time for "c.pmin" has elapsed since the last notification. The sampled value is sent in the notification. If the value continues to fall no notifications are generated as a result of "c.lt". If the value rises above the lower limit value then a new notification is sent, subject to the "c.pmin" time.</t>
          <t>The Less Than parameter MUST be supported on resources with a scalar numeric value.</t>
        </section>
        <section anchor="st">
          <name>Change Step (c.st)</name>
          <t>When present, Change step indicates how much the value representing a resource state SHOULD change before triggering a notification, compared to the previous resource state. Upon reception of a query including the "c.st" parameter, the current resource state representing the most recently sampled value is reported, and then set as the last reported value (last_rep_v). When a subsequent sampled value or update of the resource state differs from the last reported state by an amount, positive or negative, greater than or equal to "c.st", and the time for "c.pmin" has elapsed since the last notification, a notification is sent and the last reported value is updated to the new resource state sent in the notification. The change step MUST be greater than zero, otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
          <t>The Change Step parameter MUST be supported on resources with a scalar numeric value.</t>
          <t>Note: due to sampling and other constraints, e.g., "c.pmin", the change in resource states received in two sequential notifications may differ by more than "c.st".</t>
        </section>
        <section anchor="band">
          <name>Notification Band (c.band)</name>
          <t>The Notification Band parameter allows a bounded or unbounded (based on a minimum or maximum) value range that may trigger multiple notifications. This enables use cases where different ranges result in differing behaviour. For example, in monitoring the temperature of machinery, whilst the temperature is in the normal operating range, only periodic updates are needed. However as the temperature moves to more abnormal ranges, more frequent state updates may be sent to clients.</t>
          <t>Without a notification band, a transition across a Less Than (c.lt), or Greater Than (c.gt) limit only generates one notification.  This means that it is not possible to describe a case where multiple notifications are sent so long as the limit is exceeded.</t>
          <t>The "c.band" parameter works as a modifier to the behaviour of "c.gt" and "c.lt". Its use is determined only by its presence, as this parameter takes no value. Therefore, if "c.band" is present in a query, "c.gt", "c.lt", or both, MUST be included.</t>
          <t>When "c.band" is present with "c.lt" but without "c.gt", the lower bound for the notification band (notification band minimum) is defined. Notifications occur when the resource value is equal to or above the notification band minimum. No maximum values exist for the band.</t>
          <t>When "c.band" is present with "c.gt" but without "c.lt", the upper bound for the notification band (notification band maximum) is defined. Notifications occur when the resource value is equal to or below the notification band maximum. No minimum values exist for the band.</t>
          <t>If "c.band" is specified and the value of "c.gt" is less than that of "c.lt", in-band notification occurs. That is, notification occurs whenever the resource value is between the "c.gt" and "c.lt" values, including equal to "c.gt" or "c.lt".</t>
          <t>If "c.band" is specified and the value of "c.gt" is greater than that of "c.lt", out-of-band notification occurs. That is, notification occurs when the resource value is not between the "c.gt" and "c.lt" values, excluding equal to "c.gt" and "c.lt".</t>
          <t>The Notification Band parameter MUST be supported on resources with a scalar numeric value.</t>
        </section>
        <section anchor="edge">
          <name>Edge (c.edge)</name>
          <t>When present, the Edge parameter indicates interest for receiving notifications of either the falling edge or the rising edge transition of a boolean resource state. When the value of the "c.edge" parameter is 0 (False), the server notifies the client each time a resource state changes from True to False. When the value of the "c.edge" parameter is 1 (True), the server notifies the client each time a resource state changes from False to True.</t>
          <t>The "c.edge" parameter MUST be supported on resources with a boolean value.</t>
        </section>
      </section>
      <section anchor="conditional-control-parameters">
        <name>Conditional Control Parameters</name>
        <t>Conditional Control Parameters define the time intervals between consecutive notifications as well as the cadence of the evaluation of the conditions that trigger a notification. Conditional Control Parameters can be used to configure the internal server-driven sampling process for performing evaluations of the conditions of a resource. One or more Conditional Control Parameters MAY be included in an Observe request.</t>
        <t>Conditional Control Parameters are defined below:</t>
        <table anchor="controlparameters">
          <name>Conditional Control Parameters</name>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Name</th>
              <th align="left">Value Type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Minimum Period (s)</td>
              <td align="left">c.pmin</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Maximum Period (s)</td>
              <td align="left">c.pmax</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Minimum Evaluation Period (s)</td>
              <td align="left">c.epmin</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Maximum Evaluation Period (s)</td>
              <td align="left">c.epmax</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Confirmable Notification</td>
              <td align="left">c.con</td>
              <td align="left">xs:boolean</td>
            </tr>
          </tbody>
        </table>
        <section anchor="pmin">
          <name>Minimum Period (c.pmin)</name>
          <t>When present, Minimum Period indicates the minimum time, in seconds, between two consecutive notifications (whether or not the resource state has changed). The value is a floating-point number, allowing for sub-second precision (e.g., 0.5 for half a second or 0.01 for 10 milliseconds). If a server does not support sub-second intervals, it MAY round the value up to the nearest supported resolution. In the absence of this parameter, the minimum period is up to the server. Minimum Period MUST be greater than zero, otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
          <t>A server MAY update the resource state with the last sampled value that occurred during the "c.pmin" interval, after the "c.pmin" interval expires.</t>
          <t>Note: due to finite quantization effects, the time between notifications may be greater than "c.pmin" even when the sampled value changes within the "c.pmin" interval. "c.pmin" may or may not be used to drive the internal sampling process.</t>
        </section>
        <section anchor="pmax">
          <name>Maximum Period (c.pmax)</name>
          <t>When present, Maximum Period indicates the maximum time, in seconds, between two consecutive notifications (regardless of whether or not the resource state has changed). The value is a floating-point number, allowing for sub-second precision (e.g., 0.5 for half a second or 0.01 for 10 milliseconds). If a server does not support sub-second intervals, it MAY round the value up to the nearest supported resolution. In the absence of this parameter, the maximum period is up to the server. Maximum Period MUST be greater than zero and MUST be greater than or equal to Minimum Period (if present), otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
        </section>
        <section anchor="epmin">
          <name>Minimum Evaluation Period (c.epmin)</name>
          <t>When present, Minimum Evaluation Period indicates the minimum time, in seconds, the client recommends to the server to wait between two consecutive evaluations of the conditions of a resource, since the client has no interest in the server doing more frequent evaluations. The value is a floating-point number, allowing for sub-second precision (e.g., 0.5 for half a second or 0.01 for 10 milliseconds). If a server does not support sub-second intervals, it MAY round the value up to the nearest supported resolution. When the value of Minimum Evaluation Period expires after the previous evaluation, the server MAY immediately perform a new evaluation. In the absence of this parameter, the minimum evaluation period is not defined and thus not used by the server. The server MAY use "c.pmin", if defined, as a guidance on the desired evaluation cadence. Minimum Evaluation Period MUST be greater than zero, otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
        </section>
        <section anchor="epmax">
          <name>Maximum Evaluation Period (c.epmax)</name>
          <t>When present, Maximum Evaluation Period indicates the maximum time, in seconds, the server MAY wait between two consecutive evaluations of the conditions of a resource. The value is a floating-point number, allowing for sub-second precision (e.g., 0.5 for half a second or 0.01 for 10 milliseconds). If a server does not support sub-second intervals, it MAY round the value up to the nearest supported resolution. When the value of Maximum Evaluation Period expires after the previous evaluation, the server MUST immediately perform a new evaluation. In the absence of this parameter, the maximum evaluation period is not defined and thus not used by the server. Maximum Evaluation Period MUST be greater than zero and MUST be greater than Minimum Evaluation Period (if present), otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
        </section>
        <section anchor="con">
          <name>Confirmable Notification (c.con)</name>
          <t>When present with a value of 1 (True), Confirmable Notification indicates that a notification MUST be confirmable, i.e., the server MUST send the notification in a confirmable CoAP message, to request an acknowledgement from the client. When present with a value of 0 (False), Confirmable Notification indicates a notification can be confirmable or non-confirmable, i.e., it can be sent in a confirmable or a non-confirmable CoAP message.</t>
        </section>
      </section>
      <section anchor="server-processing-of-conditional-parameters">
        <name>Server processing of Conditional Parameters</name>
        <t>Conditional Notification Parameters and Conditional Control Parameters may be present in the same query. However, they are not defined at multiple prioritization levels. The server sends a notification whenever any of the parameter conditions are met, upon which it updates its last notification value and time to prepare for the next notification. When Conditional Notification Parameters and Conditional Control Parameters are present in the same query, notifications may be subjected to the presence of a Conditional Control Parameter such as "c.pmin" or "c.pmax". Only one notification occurs when there are multiple conditions being met at the same time. As a general example, the pseudocode illustrated in <xref target="pseudocode"/> shows one way to determine when a notification is to be sent.</t>
      </section>
    </section>
    <section anchor="Implementation">
      <name>Implementation Considerations</name>
      <t>If a conditional parameter is provided with an inappropriate data type (e.g., "c.edge=10" where "c.edge" is expected to be boolean), the server MUST reject the request with 4.00 Bad Request.</t>
      <t>When "c.pmax" and "c.pmin" are equal, the expected behaviour is that notifications will be sent every (c.pmin == c.pmax) seconds. However, these notifications can only be fulfilled by the server on a best effort basis. Because "c.pmin" and "c.pmax" are designed as acceptable tolerance bounds for sending state updates, a query from an interested client containing equal "c.pmin" and "c.pmax" values must not be seen as a hard real-time scheduling contract between the client and the server.</t>
      <t>The use of the notification band minimum and maximum allows for a synchronization whenever a change in the resource value occurs. Theoretically, this could occur in-line with the server internal sample period or as defined by the "c.epmin" and "c.epmax" values for determining the resource value. Implementors SHOULD consider the resolution needed before updating the resource, e.g., updating the resource when a temperature sensor value changes by 0.001 degree versus 1 degree.</t>
      <t>When a server has multiple observations with different measurement cadences as defined by the "c.epmin" and "c.epmax" values, the server MAY evaluate all observations when performing the measurement of any one observation.</t>
      <t>An implementation might choose to apply conditions like c.gt or c.lt to the v (value) field in SenML-based resources. However, this behavior is not defined in this document. Implementers are encouraged to consider how such formats may be adapted in their specific deployments. Future extensions or additional mechanisms may provide explicit guidance on supporting conditional parameters for complex data structures as well as data structures having multiple records.</t>
      <t>This specification defines conditional parameters that can be used with CoAP Observe relationships between CoAP clients and CoAP servers. However, it is recognised that the presence of one or more proxies between a client and a server can interfere with clients receiving resource updates, if a proxy does not supply resource representations when the value remains unchanged (e.g., if "c.pmax" is set, and the server sends multiple updates when the resource state contains the same value). A server SHOULD use the Max-Age option to mitigate this, by setting Max-Age to be less than or equal to "c.pmax".</t>
      <t>This document defines conditional query parameters that refine the behavior of a resource when used in conjunction with the Observe mechanism. As such, this specification does not require resources to advertise explicit support for conditional parameters through resource discovery. More specifically, it does not define a new CoRE Link Format (if=) interface type for advertising support of these conditional parameters. This specification intentionally avoids defining such an interface type at this stage, in order to preserve flexibility and to avoid introducing unnecessary coupling between resource interface semantics and request-time projection behavior.</t>
      <t>Future specifications MAY define a Link Format interface type or other discovery mechanisms to explicitly advertise support for conditional parameters, should deployment experience indicate that proactive capability discovery is necessary. Such mechanisms would need to clearly specify the behavioral guarantees associated with advertising that interface.</t>
    </section>
    <section anchor="seccons">
      <name>Security Considerations</name>
      <t>The security considerations in <xref section="11" sectionFormat="of" target="RFC7252"/> apply.</t>
      <t>Additionally, the security considerations in <xref section="7" sectionFormat="of" target="RFC7641"/> also apply, particularly towards mitigating amplification attacks.</t>
      <t>As noted in <xref section="2.2" sectionFormat="of" target="I-D.irtf-t2trg-amplification-attacks"/>, an attacker could craft GET requests combining observations with conditional parameters such as c.pmax or c.epmax with values that are below a minimum implementation-specific threshold. If a server receives such a request and is unwilling to register the observer client, the server MAY silently ignore the registration request and process the GET request as usual.  The resulting response MUST NOT include an Observe Option, the absence of which signals to the client that it will not be added to the list of observers by the server.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA:</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <t>This document establishes the "Conditional parameters" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
      <t>Each entry in the registry must include:</t>
      <ul spacing="normal">
        <li>
          <t>Name: This is the human-readable name and description of the conditional parameter,</t>
        </li>
        <li>
          <t>Parameter: This is the short name, as used in query parameters,</t>
        </li>
        <li>
          <t>Value Type: The value type of the parameter (if any),</t>
        </li>
        <li>
          <t>Reference: The link to reference documentation, which must give details describing the conditional notification or control parameter and how it is to be processed.</t>
        </li>
      </ul>
      <t>Initial entries in this subregistry are as follows:</t>
      <table anchor="conditionalparameters-registry">
        <name>New Conditional Parameters registry</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Parameter</th>
            <th align="left">Value Type</th>
            <th align="left">Change Controller</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Minimum Period (s)</td>
            <td align="left">c.pmin</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Maximum Period (s)</td>
            <td align="left">c.pmax</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Minimum Evaluation Period (s)</td>
            <td align="left">c.epmin</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Maximum Evaluation Period (s)</td>
            <td align="left">c.epmax</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Confirmable Notification</td>
            <td align="left">c.con</td>
            <td align="left">xs:boolean</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Greater Than</td>
            <td align="left">c.gt</td>
            <td align="left">xs:decimal</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Less Than</td>
            <td align="left">c.lt</td>
            <td align="left">xs:decimal</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Change Step</td>
            <td align="left">c.st</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Notification Band</td>
            <td align="left">c.band</td>
            <td align="left">(none)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Edge</td>
            <td align="left">c.edge</td>
            <td align="left">xs:boolean</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
        </tbody>
      </table>
      <t>The IANA policy for future additions to the subregistry is Expert Review, as described in <xref target="RFC8126"/>. The evaluation of a registration
request should consider the following points:</t>
      <ul spacing="normal">
        <li>
          <t>Clarity and correctness of registrations. Experts are expected to check the clarity of purpose and use of the new conditional parameters and associated query parameters, which have to be clearly defined in the corresponding reference documentation. Conditional parameters that do not meet these objectives of clarity and completeness MUST NOT be registered.</t>
        </li>
        <li>
          <t>Point squatting is to be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that a new conditional parameter is likely to be used in deployments and is not going to duplicate one that is already registered. To reduce the potential for conflict with commonly used query parameter names, it is strongly recommended that new entry names be prepended with "c." (such as entries described in <xref target="conditionalparameters-registry"/>).</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="W3C.REC-xmlschema-2-20041028" target="https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">
          <front>
            <title>XML Schema Part 2: Datatypes Second Edition</title>
            <author fullname="Ashok Malhotra" role="editor"/>
            <author fullname="Paul V. Biron" role="editor"/>
            <date day="28" month="October" year="2004"/>
          </front>
          <seriesInfo name="W3C REC" value="REC-xmlschema-2-20041028"/>
          <seriesInfo name="W3C" value="REC-xmlschema-2-20041028"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.irtf-t2trg-amplification-attacks">
          <front>
            <title>Amplification Attacks Using the Constrained Application Protocol (CoAP)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
              <organization>Energy Harvesting Solutions</organization>
            </author>
            <date day="18" month="June" year="2025"/>
            <abstract>
              <t>   Protecting Internet of Things (IoT) devices against attacks is not
   enough.  IoT deployments need to make sure that they are not used for
   Distributed Denial-of-Service (DDoS) attacks.  DDoS attacks are
   typically done with compromised devices or with amplification attacks
   using a spoofed source address.  This document gives examples of
   different theoretical amplification attacks using the Constrained
   Application Protocol (CoAP).  The goal with this document is to raise
   awareness and to motivate generic and protocol-specific
   recommendations on the usage of CoAP.  Some of the discussed attacks
   can be mitigated by not using NoSec or by using the Echo option.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-amplification-attacks-05"/>
        </reference>
      </references>
    </references>
    <?line 432?>

<section anchor="pseudocode">
      <name>Pseudocode: Processing Conditional Parameters</name>
      <t>This appendix is informative. It describes the possible logic of how a server processes conditional parameters to determine when to send a notification to a client.</t>
      <t>Note: The pseudocode is not exhaustive nor should it be treated as reference code. It depicts a subset of the conditional parameters described in this specification.</t>
      <figure anchor="figattrint">
        <name>Pseudocode showing the logic for processing conditional parameters</name>
        <artwork><![CDATA[
// struct Resource {
//
//  bool band;
//  int pmin;
//  int pmax;
//  int epmin;
//  int epmax;
//  int st;
//  int gt;
//  int lt;
//  
//  time_t last_sampled_time;
//  time_t last_rep_time;

//  int curr_state;
//  int prev_state;   
//
//  ...
//
// };


boolean is_notifiable( Resource * r ) {

  time_t curr_time = get_current_time();

  #define BAND_EXISTS ( r->band )

  #define LT_EXISTS ( r->lt )
  #define GT_EXISTS ( r->gt )
   
  #define EPMIN_TRUE ( curr_time - r->last_sampled_time >= r->epmin )
  #define EPMAX_TRUE ( curr_time - r->last_sampled_time > r->epmax )
    
  #define PMIN_TRUE ( curr_time - r->last_reported_time >= r->pmin )
  #define PMAX_TRUE ( curr_time - r->last_reported_time > r->pmax )

  #define LT_TRUE ( r->curr_state < r->lt ^ r->prev_state < r->lt )
  #define GT_TRUE ( r->curr_state > r->gt ^ r->prev_state > r->gt )

  #define ST_TRUE ( abs( r->curr_state - r->prev_state ) >= r->st )

  #define INBAND_TRUE ( gt < lt && \\
                       (gt <= curr_state && curr_state <= lt ))
  #define OUTOFBAND_TRUE ( lt < gt && \\
                           (gt < curr_state || curr_state < lt ))
    
  #define BANDMIN_TRUE ( r->lt <= r->curr_state)
  #define BANDMAX_TRUE (r->curr_state <= r->gt)


  if PMAX_TRUE {
        return true;
  }
    
  if PMIN_TRUE {
      if !BAND_EXISTS {
          if LT_TRUE || GT_TRUE || ST_TRUE {
              return true;
          }
      }
      else {
       if ( (BANDMIN_TRUE && !GT_EXISTS) || \
            (BANDMAX_TRUE && !LT_EXISTS) || \
             INBAND_TRUE || \
             OUTOFBAND_TRUE ) {
           return true;
       }
      }
  }

  return false;
    
}

]]></artwork>
      </figure>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This appendix is informative. It provides some examples of the use of Conditional Parameters.</t>
      <t>Note: For brevity, only the method or response code is shown in the header field.</t>
      <section anchor="minimum-period-cpmin-example">
        <name>Minimum Period (c.pmin) example</name>
        <figure anchor="figbindexp1">
          <name>Client registers and receives one notification of the current state and one of a new state state when c.pmin time expires.</name>
          <artwork><![CDATA[
        Observed   CLIENT  SERVER     Actual
    t   State         |      |         State
        ____________  |      |  ____________
    1                 |      |
    2    unknown      |      |     18.5 Cel
    3                 +----->|                  Header: GET
    4                 | GET  |                   Token: 0x4a
    5                 |      |                Uri-Path: temperature
    6                 |      |               Uri-Query: c.pmin="10"
    7                 |      |                 Observe: 0 (register)
    8                 |      |
    9   ____________  |<-----+                  Header: 2.05
   10                 | 2.05 |                   Token: 0x4a
   11    18.5 Cel     |      |                 Observe: 9
   12                 |      |                 Payload: "18.5"
   13                 |      |  ____________
   14                 |      |
   15                 |      |     23 Cel
   16                 |      |
   17                 |      |
   18                 |      |
   19                 |      |  ____________
   20   ____________  |<-----+                  Header: 2.05
   21                 | 2.05 |     26 Cel        Token: 0x4a
   22    26 Cel       |      |                 Observe: 20
   23                 |      |                 Payload: "26"
   24                 |      |
   25                 |      |
]]></artwork>
        </figure>
      </section>
      <section anchor="maximum-period-cpmax-example">
        <name>Maximum Period (c.pmax) example</name>
        <figure anchor="figbindexp2">
          <name>Client registers and receives one notification of the current state, one of a new state and one of an unchanged state when c.pmax time expires.</name>
          <artwork><![CDATA[
        Observed   CLIENT  SERVER     Actual
    t   State         |      |         State
        ____________  |      |  ____________
    1                 |      |
    2    unknown      |      |     18.5 Cel
    3                 +----->|                  Header: GET
    4                 | GET  |                   Token: 0x4a
    5                 |      |                Uri-Path: temperature
    6                 |      |               Uri-Query: c.pmax="20"
    7                 |      |                 Observe: 0 (register)
    8                 |      |
    9   ____________  |<-----+                  Header: 2.05
   10                 | 2.05 |                   Token: 0x4a
   11    18.5 Cel     |      |                 Observe: 9
   12                 |      |                 Payload: "18.5"
   13                 |      |
   14                 |      |
   15                 |      |  ____________
   16   ____________  |<-----+                  Header: 2.05
   17                 | 2.05 |     23 Cel        Token: 0x4a
   18    23 Cel       |      |                 Observe: 16
   19                 |      |                 Payload: "23"
   20                 |      |
   21                 |      |
   22                 |      |
   23                 |      |
   24                 |      |
   25                 |      |
   26                 |      |
   27                 |      |
   28                 |      |
   29                 |      |
   30                 |      |
   31                 |      |
   32                 |      |
   33                 |      |
   34                 |      |   
   35                 |      |
   36                 |      |  ____________
   37   ____________  |<-----+                  Header: 2.05
   38                 | 2.05 |     23 Cel        Token: 0x4a
   39    23 Cel       |      |                 Observe: 37
   40                 |      |                 Payload: "23"
   41                 |      |
   42                 |      |
]]></artwork>
        </figure>
      </section>
      <section anchor="greater-than-cgt-example">
        <name>Greater Than (c.gt) example</name>
        <figure anchor="figbindexp3">
          <name>Client registers and receives one notification of the current state and one of a new state when it passes through the greater than threshold of 25.</name>
          <artwork><![CDATA[
     Observed   CLIENT  SERVER     Actual
 t   State         |      |         State
     ____________  |      |  ____________
 1                 |      |
 2    unknown      |      |     18.5 Cel
 3                 +----->|                  Header: GET 
 4                 | GET  |                   Token: 0x4a
 5                 |      |                Uri-Path: temperature
 6                 |      |               Uri-Query: c.gt=25
 7                 |      |                 Observe: 0 (register)
 8                 |      |
 9   ____________  |<-----+                  Header: 2.05 
10                 | 2.05 |                   Token: 0x4a
11    18.5 Cel     |      |                 Observe: 9
12                 |      |                 Payload: "18.5"
13                 |      |                 
14                 |      |
15                 |      |  ____________
16   ____________  |<-----+                  Header: 2.05 
17                 | 2.05 |     26 Cel        Token: 0x4a
18    26 Cel       |      |                 Observe: 16
29                 |      |                 Payload: "26"
20                 |      |                 
21                 |      |
]]></artwork>
        </figure>
      </section>
      <section anchor="greater-than-cgt-and-period-max-cpmax-example">
        <name>Greater Than (c.gt) and Period Max (c.pmax) example</name>
        <figure anchor="figbindexp4">
          <name>Client registers and receives one notification of the current state, one when c.pmax time expires, and one of a new state when it passes through the greater than threshold of 25.</name>
          <artwork><![CDATA[
     Observed   CLIENT  SERVER     Actual
 t   State         |      |         State
     ____________  |      |  ____________
 1                 |      |
 2    unknown      |      |     18.5 Cel
 3                 +----->|                  Header: GET 
 4                 | GET  |                   Token: 0x4a
 5                 |      |                Uri-Path: temperature
 6                 |      |         Uri-Query: c.pmax=20&c.gt=25
 7                 |      |                 Observe: 0 (register)
 8                 |      |
 9   ____________  |<-----+                  Header: 2.05 
10                 | 2.05 |                   Token: 0x4a
11    18.5 Cel     |      |                 Observe: 9
12                 |      |                 Payload: "18.5"
13                 |      |                 
14                 |      |
15                 |      |
16                 |      |
17                 |      |
18                 |      |
19                 |      |
20                 |      |
21                 |      |
22                 |      |
23                 |      |
24                 |      |
25                 |      |
26                 |      |
27                 |      |
28                 |      |
29                 |      |  ____________
30   ____________  |<-----+                  Header: 2.05
31                 | 2.05 |     23 Cel        Token: 0x4a
32    23 Cel       |      |                 Observe: 30
33                 |      |                 Payload: "23"
34                 |      |                 
35                 |      |
36                 |      |  ____________
37   ____________  |<-----+                  Header: 2.05 
38                 | 2.05 |     26 Cel        Token: 0x4a
39    26 Cel       |      |                 Observe: 37
40                 |      |                 Payload: "26"
41                 |      |                 
42                 |      |
]]></artwork>
        </figure>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Hannes Tschofenig and Mert Ocak highlighted syntactical corrections in the usage of pmax and pmin in a query. David Navarro proposed allowing for pmax to be equal to pmin. Jaime Jiménez, Marco Tiloca and Ines Robles provided extensive reviews. Suggestions from Klaus Hartke aided greatly in clarifying how conditional parameters work with CoAP Observe. Security considerations were improved based on authors' observations in <xref section="2.2" sectionFormat="of" target="I-D.irtf-t2trg-amplification-attacks"/>.</t>
    </section>
    <section numbered="false" anchor="changelog" removeInRFC="true">
      <name>Changelog</name>
      <t>draft-ietf-core-conditional-attributes-12</t>
      <ul spacing="normal">
        <li>
          <t>Added "xs:boolean" and "xs:decimal" types in Terminology</t>
        </li>
        <li>
          <t>Added avoidance of complex data structures in Section 3</t>
        </li>
        <li>
          <t>Extra text regarding resource state projection in Section 3.1</t>
        </li>
        <li>
          <t>Implementation Considerations now discusses SenML as well as if= interface descriptions.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-11</t>
      <ul spacing="normal">
        <li>
          <t>Title of the document changed, and conditional attributes are now called conditional query parameters for accuracy.</t>
        </li>
        <li>
          <t>Clarifying decimal support for conditional control parameters.</t>
        </li>
        <li>
          <t>Text for error handling of type mismatches added</t>
        </li>
        <li>
          <t>Editorial fixes</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-10</t>
      <ul spacing="normal">
        <li>
          <t>Rectifying text and a table column in IANA Considerations, that version -09 erroneously omitted.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-09</t>
      <ul spacing="normal">
        <li>
          <t>IANA Considerations section updated</t>
        </li>
        <li>
          <t>Editorial and formatting fixes</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-08</t>
      <ul spacing="normal">
        <li>
          <t>Various editorial fixes and corrections based on review comments on mailing list from Marco Tiloca.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-07</t>
      <ul spacing="normal">
        <li>
          <t>Expanded how conditional attributes work with Observe in sections 3.1 to 3.4</t>
        </li>
        <li>
          <t>Addressed early review from IoT Directorate</t>
        </li>
        <li>
          <t>Security Considerations section expanded</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-06</t>
      <ul spacing="normal">
        <li>
          <t>Removed code block from Section 3.5</t>
        </li>
        <li>
          <t>Added an appendix containing pseudocode for server processing.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-05</t>
      <ul spacing="normal">
        <li>
          <t>Multiple (mostly editorial) clarifications and updates based on review comments on mailing list from Marco Tiloca.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-04</t>
      <ul spacing="normal">
        <li>
          <t>Reference code updated to include behaviour for edge attribute.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-03</t>
      <ul spacing="normal">
        <li>
          <t>Attribute names updated to create uniqueness for use as conditional observe attributes.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-02</t>
      <ul spacing="normal">
        <li>
          <t>Clarifications on usage and value of the band parameter</t>
        </li>
        <li>
          <t>Implementation considerations for proxies added</t>
        </li>
        <li>
          <t>Security considerations added</t>
        </li>
        <li>
          <t>IANA considerations added</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-01</t>
      <ul spacing="normal">
        <li>
          <t>Clarifications on True and False values for Edge and Con Attributes</t>
        </li>
        <li>
          <t>Alan Soloway added as author</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-00</t>
      <ul spacing="normal">
        <li>
          <t>Conditional Atttributes section from draft-ietf-core-dynlink-13 separated into own WG draft</t>
        </li>
      </ul>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="C." surname="Groves" fullname="Christian Groves">
        <organization/>
        <address>
          <postal>
            <country>Australia</country>
          </postal>
          <email>cngroves.std@gmail.com</email>
        </address>
      </contact>
      <contact initials="Z." surname="Shelby" fullname="Zach Shelby">
        <organization>ARM</organization>
        <address>
          <postal>
            <city>Vuokatti</city>
            <country>Finland</country>
          </postal>
          <email>zach.shelby@arm.com</email>
        </address>
      </contact>
      <contact initials="M." surname="Vial" fullname="Matthieu Vial">
        <organization>Schneider-Electric</organization>
        <address>
          <postal>
            <city>Grenoble</city>
            <country>France</country>
          </postal>
          <email>matthieu.vial@schneider-electric.com</email>
        </address>
      </contact>
      <contact initials="J." surname="Zhu" fullname="Jintao Zhu">
        <organization>Huawei</organization>
        <address>
          <postal>
            <city>Xi’an, Shaanxi Province</city>
            <country>China</country>
          </postal>
          <email>jintao.zhu@huawei.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
