<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-asdf-sdf-protocol-mapping-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="sdf-protocol-mapping">Protocol Mapping for SDF</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-protocol-mapping-03"/>
    <author initials="R." surname="Mohan" fullname="Rohit Mohan">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street>170 West Tasman Drive</street>
          <city>San Jose</city>
          <code>95134</code>
          <country>USA</country>
        </postal>
        <email>rohitmo@cisco.com</email>
      </address>
    </author>
    <author initials="B." surname="Brinckman" fullname="Bart Brinckman">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street>170 West Tasman Drive</street>
          <city>San Jose</city>
          <code>95134</code>
          <country>USA</country>
        </postal>
        <email>bbrinckm@cisco.com</email>
      </address>
    </author>
    <author initials="L." surname="Corneo" fullname="Lorenzo Corneo">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street>Hirsalantie 11</street>
          <city>Jorvas</city>
          <code>1296</code>
          <country>Finland</country>
        </postal>
        <email>lorenzo.corneo@ericsson.com</email>
      </address>
    </author>
    <date year="2026" month="January" day="20"/>
    <area>Applications and Real-Time</area>
    <workgroup>A Semantic Definition Format for Data and Interactions of Things</workgroup>
    <keyword>IoT</keyword>
    <abstract>
      <?line 66?>

<t>This document defines protocol mapping extensions for the Semantic Definition
Format (SDF) to enable mapping of protocol-agnostic SDF affordances to
protocol-specific operations. The protocol mapping mechanism allows SDF models
to specify how properties, actions, and events should be accessed using specific
non-IP and IP protocols such as Bluetooth Low Energy, Zigbee or HTTP and CoAP.</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-asdf-sdf-protocol-mapping/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        A Semantic Definition Format for Data and Interactions of Things Working Group mailing list (<eref target="mailto:asdf@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/asdf/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/asdf/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-asdf/sdf-protocol-mapping"/>.</t>
    </note>
  </front>
  <middle>
    <?line 74?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Semantic Definition Format (SDF) <xref target="I-D.ietf-asdf-sdf"/> provides a protocol-agnostic way
to describe IoT devices and their capabilities through properties, actions, and
events (collectively called affordances). However, when implementing these
affordances on actual devices using specific communication protocols, there
needs to be a mechanism to map the protocol-agnostic SDF definitions to
protocol-specific operations.</t>
      <t>These protocols can be non-IP protocols that are commonly used in IoT
environments, such as <xref target="BLE53"/> and <xref target="Zigbee22"/>. The protocol mapping mechanism
is designed to be extensible, allowing future specifications to define mappings
for IP-based protocols such as HTTP <xref target="RFC2616"/> or CoAP <xref target="RFC7252"/>.</t>
      <t>To leverage an SDF model to perform protocol-specific operations on an instance
of a device, a mapping of the SDF affordance to a protocol-specific attribute is
required. This document defines the protocol mapping mechanism using the
<tt>sdfProtocolMap</tt> keyword, which allows SDF models to include protocol-specific
mapping information alongside the protocol-agnostic definitions.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

</section>
    <section anchor="structure">
      <name>Structure</name>
      <t>Protocol mapping is required to map a protocol-agnostic affordance to
a protocol-specific operation, as implementations of the same affordance
will differ between protocols. For example, BLE will address a property
as a service characteristic, while a property in Zigbee is addressed
as an attribute in a cluster of an endpoint.</t>
      <t>A protocol mapping object is a JSON object identified by the <tt>sdfProtocolMap</tt>
keyword. Protocol-specific properties are embedded within this object, organized
by protocol name, e.g., "ble" or "zigbee". The protocol name <bcp14>MUST</bcp14> be specified
in the IANA registry requested in <xref target="iana-prot-map"/>.</t>
      <figure anchor="protmap">
        <name>Property Mapping</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="320" viewBox="0 0 320 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 24,48 L 24,128" fill="none" stroke="black"/>
              <path d="M 96,80 L 96,96" fill="none" stroke="black"/>
              <path d="M 96,144 L 96,160" fill="none" stroke="black"/>
              <path d="M 24,64 L 72,64" fill="none" stroke="black"/>
              <path d="M 96,96 L 120,96" fill="none" stroke="black"/>
              <path d="M 24,128 L 72,128" fill="none" stroke="black"/>
              <path d="M 96,160 L 120,160" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="128,160 116,154.4 116,165.6" fill="black" transform="rotate(0,120,160)"/>
              <polygon class="arrowhead" points="128,96 116,90.4 116,101.6" fill="black" transform="rotate(0,120,96)"/>
              <polygon class="arrowhead" points="80,128 68,122.4 68,133.6" fill="black" transform="rotate(0,72,128)"/>
              <polygon class="arrowhead" points="80,64 68,58.4 68,69.6" fill="black" transform="rotate(0,72,64)"/>
              <g class="text">
                <text x="60" y="36">sdfProtocolMap</text>
                <text x="96" y="68">ble</text>
                <text x="180" y="100">BLE-specific</text>
                <text x="264" y="100">mapping</text>
                <text x="108" y="132">zigbee</text>
                <text x="192" y="164">Zigbee-specific</text>
                <text x="288" y="164">mapping</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
sdfProtocolMap
  |
  +-----> ble
  |        |
  |        +--> BLE-specific mapping
  |
  +-----> zigbee
           |
           +--> Zigbee-specific mapping
]]></artwork>
        </artset>
      </figure>
      <t>As shown in <xref target="protmap"/>, protocol-specific properties must be embedded in an
sdfProtocolMap object, for example a "ble" or a "zigbee" object.</t>
      <table anchor="proobj">
        <name>Protocol objects</name>
        <thead>
          <tr>
            <th align="left">Attribute</th>
            <th align="left">Type</th>
            <th align="left">Example</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">ble</td>
            <td align="left">object</td>
            <td align="left">an object with BLE-specific attributes</td>
          </tr>
          <tr>
            <td align="left">zigbee</td>
            <td align="left">object</td>
            <td align="left">an object with Zigbee-specific attributes</td>
          </tr>
        </tbody>
      </table>
      <t>where-</t>
      <ul spacing="normal">
        <li>
          <t>"ble" is an object containing properties that are specific to the BLE
protocol.</t>
        </li>
        <li>
          <t>"zigbee" is an object containing properties that are specific to the
Zigbee protocol.</t>
        </li>
        <li>
          <t>Other protocol mapping objects can be added by creating a new protocol
object</t>
        </li>
      </ul>
      <t>Example protocol mapping:</t>
      <figure anchor="exprotmap">
        <name>Example property mapping</name>
        <sourcecode type="json"><![CDATA[
{
  "sdfObject": {
    "healthsensor": {
      "sdfProperty": {
        "heartrate": {
          "description": "The current measured heart rate",
          "type": "number",
          "unit": "beat/min",
          "observable": false,
          "writable": false,
          "sdfProtocolMap": {
            "ble": {
              "serviceID": "12345678-1234-5678-1234-56789abcdef4",
              "characteristicID":
                "12345678-1234-5678-1234-56789abcdef4"
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
      <t>For properties that have a different protocol mapping for read and write operations, the protocol mapping can be specified as such:</t>
      <figure anchor="exprotmap2">
        <name>Example property mapping</name>
        <sourcecode type="json"><![CDATA[
{
  "sdfObject": {
    "healthsensor": {
      "sdfProperty": {
        "heartrate": {
          "description": "The current measured heart rate",
          "type": "number",
          "unit": "beat/min",
          "observable": false,
          "sdfProtocolMap": {
            "ble": {
              "read": {
                "serviceID": "12345678-1234-5678-1234-56789abcdef4",
                "characteristicID":
                  "12345678-1234-5678-1234-56789abcdef5"
              },
              "write": {
                "serviceID": "12345678-1234-5678-1234-56789abcdef4",
                "characteristicID":
                  "12345678-1234-5678-1234-56789abcdef6"
              }
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="usage">
      <name>Usage</name>
      <t>A protocol map <bcp14>MAY</bcp14> be provided as part of the SDF model, specifically in the SDF
affordance definition. The extension points in the SDF affordance definition
defined in <xref target="I-D.ietf-asdf-sdf"/> are used to specify the protocol mapping information as a
part of the SDF model.</t>
      <t>For SDF properties, the protocol mapping is specified as an
extension to a named property quality using the <tt>sdfProtocolMap</tt> keyword.
For SDF actions and events, the protocol mapping can be specified
as an extension to the named quality or as part of the <tt>sdfInputData</tt> or
<tt>sdfOutputData</tt> objects.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="ble-protocol-mapping">
        <name>BLE Protocol Mapping</name>
        <t>The BLE protocol mapping allows SDF models to specify how properties,
actions, and events should be accessed using Bluetooth Low Energy (BLE)
protocol. The mapping includes details such as service IDs and characteristic
IDs that are used to access the corresponding SDF affordances.</t>
        <section anchor="ble-protocol-mapping-structure">
          <name>BLE Protocol Mapping Structure</name>
          <t>For SDF properties and actions, the BLE protocol mapping structure
is defined as follows:</t>
          <figure anchor="blemap1">
            <name>CDDL definition for BLE Protocol Mapping for properties and actions</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-PROTOCOL-MAP //= (
  ble: ble-protocol-map
)

ble-protocol-map = {
  ? ble-property,
  ? read: { ble-property },
  ? write: { ble-property }
}

ble-property = (
  serviceID: text,
  characteristicID: text
)
]]></sourcecode>
          </figure>
          <t>Where:</t>
          <ul spacing="normal">
            <li>
              <t><tt>serviceID</tt> is the BLE service ID that corresponds to the SDF property or action.</t>
            </li>
            <li>
              <t><tt>characteristicID</tt> is the BLE characteristic ID that corresponds to the SDF property or action.</t>
            </li>
          </ul>
          <t>For example, a BLE protocol mapping for a temperature property might look like:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfProperty": {
    "temperature": {
      "sdfProtocolMap": {
        "ble": {
          "serviceID": "12345678-1234-5678-1234-56789abcdef4",
          "characteristicID": "12345678-1234-5678-1234-56789abcdef5"
        }
      }
    }
  }
}
]]></sourcecode>
          <t>For a temperature property that has different mappings for read and write operations,
the BLE protocol mapping might look like:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfProperty": {
    "temperature": {
      "sdfProtocolMap": {
        "ble": {
          "read": {
            "serviceID": "12345678-1234-5678-1234-56789abcdef4",
            "characteristicID": "12345678-1234-5678-1234-56789abcdef5"
          },
          "write": {
            "serviceID": "12345678-1234-5678-1234-56789abcdef4",
            "characteristicID": "12345678-1234-5678-1234-56789abcdef6"
          }
        }
      }
    }
  }
}
]]></sourcecode>
          <t>For SDF events, the BLE protocol mapping structure is similar, but it may
include additional attributes such as the type of the event.</t>
          <figure anchor="blemap2">
            <name>BLE Protocol Mapping for events</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-PROTOCOL-MAP //= (
  ble: ble-event-map
)

ble-event-map = {
  type: "gatt" / "advertisements" / "connection_events",
  ? serviceID: text,
  ? characteristicID: text
}
]]></sourcecode>
          </figure>
          <t>Where:</t>
          <ul spacing="normal">
            <li>
              <t><tt>type</tt> specifies the type of BLE event, such as "gatt" for GATT events,
"advertisements" for advertisement events, or "connection_events" for
connection-related events.</t>
            </li>
            <li>
              <t><tt>serviceID</tt> and <tt>characteristicID</tt> are optional attributes that are
specified if the type is "gatt".</t>
            </li>
          </ul>
          <t>For example, a BLE event mapping for a heart rate measurement event might look like:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfEvent": {
    "heartRate": {
      "sdfOutputData": {
        "sdfProtocolMap": {
          "ble": {
            "type": "gatt",
            "serviceID": "12345678-1234-5678-1234-56789abcdef4",
            "characteristicID": "12345678-1234-5678-1234-56789abcdef5"
          }
        }
      }
    }
  }
}
]]></sourcecode>
          <t>Another example of an <tt>isPresent</tt> event using BLE advertisements:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfEvent": {
    "isPresent": {
      "sdfOutputData": {
        "sdfProtocolMap": {
          "ble": {
            "type": "advertisements"
          }
        }
      }
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="zigbee-protocol-mapping">
        <name>Zigbee Protocol Mapping</name>
        <t>The Zigbee protocol mapping allows SDF models to specify how properties,
actions, and events should be accessed using the Zigbee protocol. The
mapping includes details such as cluster IDs and attribute IDs that are
used to access the corresponding SDF affordances.</t>
        <section anchor="zigbee-protocol-mapping-structure">
          <name>Zigbee Protocol Mapping Structure</name>
          <t>For SDF properties and events, the Zigbee protocol mapping structure
is defined as follows:</t>
          <figure anchor="zigmap1">
            <name>CDDL definition for Zigbee Protocol Mapping for properties and actions</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-PROTOCOL-MAP //= (
  zigbee: zigbee-protocol-map
)

zigbee-protocol-map = {
  ? zigbee-property,
  ? read: { zigbee-property },
  ? write: { zigbee-property }
}

zigbee-property = (
  endpointID: uint,
  manufacturerCode: uint,
  clusterID: uint,
  attributeID: uint,
  type: uint
)
]]></sourcecode>
          </figure>
          <t>Where:</t>
          <ul spacing="normal">
            <li>
              <t><tt>endpointID</tt> is the Zigbee endpoint ID that corresponds to the SDF affordance.</t>
            </li>
            <li>
              <t><tt>clusterID</tt> is the Zigbee cluster ID that corresponds to the SDF affordance.</t>
            </li>
            <li>
              <t><tt>attributeID</tt> is the Zigbee attribute ID that corresponds to the SDF affordance.</t>
            </li>
            <li>
              <t><tt>type</tt> is the Zigbee data type of the attribute.</t>
            </li>
          </ul>
          <t>SDF properties are mapped to Zigbee cluster attributes and events are mapped to Zigbee cluster attribute reporting.</t>
          <t>For example, a Zigbee protocol mapping for a temperature property might look like:</t>
          <sourcecode type="jsonc"><![CDATA[
{
  "sdfProperty": {
    "temperature": {
      "sdfProtocolMap": {
        "zigbee": {
          "endpointID": 1,
          "clusterID": 1026, // 0x0402
          "attributeID": 0, // 0x0000
          "type": 41 // 0x29
        }
      }
    }
  }
}
]]></sourcecode>
          <t>SDF actions are mapped to Zigbee cluster commands. The Zigbee protocol mapping structure for actions is defined as follows:</t>
          <figure anchor="zigmap2">
            <name>CDDL definition for Zigbee Protocol Mapping for actions</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-PROTOCOL-MAP //= (
  zigbee: zigbee-action-map
)

zigbee-action-map = {
  endpointID: uint,
  manufacturerCode: uint,
  clusterID: uint,
  commandID: uint,
}
]]></sourcecode>
          </figure>
          <t>Where:</t>
          <ul spacing="normal">
            <li>
              <t><tt>endpointID</tt> is the Zigbee endpoint ID that corresponds to the SDF action.</t>
            </li>
            <li>
              <t><tt>clusterID</tt> is the Zigbee cluster ID that corresponds to the SDF action.</t>
            </li>
            <li>
              <t><tt>commandID</tt> is the Zigbee command ID that corresponds to the SDF action.</t>
            </li>
          </ul>
          <t>For example, a Zigbee protocol mapping to set a temperature might look like:</t>
          <sourcecode type="jsonc"><![CDATA[
{
  "sdfAction": {
    "setTemperature": {
      "sdfProtocolMap": {
        "zigbee": {
          "endpointID": 1,
          "clusterID": 1026, // 0x0402
          "commandID": 0 // 0x0000
        }
      }
    }
  }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="scim-sdf-extension">
      <name>SCIM SDF Extension</name>
      <t>While SDF provides a way to describe a device, a method is needed to associate a
mapping between an instance of a device and its associated SDF models. To
accomplish this, we define a SCIM extension that can be used in conjunction with
<xref target="I-D.ietf-scim-device-model"/> in <xref target="scim-sdf-extension-schema"/>. Implementation
of this SCIM extension is <bcp14>OPTIONAL</bcp14> and independent of the protocol mapping
functionality defined in the rest of this document.
The SCIM schema attributes used here are described in Section 7 of <xref target="RFC7643"/>.</t>
      <figure anchor="scim-sdf-extension-schema">
        <name>SCIM SDF Extension Schema</name>
        <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
    "id": "urn:ietf:params:scim:schemas:extension:sdf:2.0:Device",
    "name": "SDFExtension",
    "description": "Device extension schema for SDF.",
    "attributes": [
        {
            "name": "sdf",
            "type": "string",
            "description": "SDF models supported by the device.",
            "multiValued": true,
            "required": true,
            "caseExact": true,
            "mutability": "readWrite",
            "returned": "default",
            "uniqueness": "none"
        }
    ],
    "meta": {
        "resourceType": "Schema",
        "location": "/v2/Schemas/urn:ietf:params:scim:schemas:extens\
ion:sdf:2.0:Device"
    }
}
]]></artwork>
      </figure>
      <t>An example SCIM device schema extension might look like:</t>
      <sourcecode type="json"><![CDATA[
{
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Device",
        "urn:ietf:params:scim:schemas:extension:sdf:2.0:Device"
    ],
    "id": "e9e30dba-f08f-4109-8486-d5c6a3316111",
    "displayName": "Heart Monitor",
    "active": true,
    "urn:ietf:params:scim:schemas:extension:sdf:2.0:Device": {
        "sdf": [
            "https://example.com/thermometer#/sdfThing/thermometer",
            "https://example.com/heartrate#/sdfObject/healthsensor"
        ]
    }
}
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="I-D.ietf-asdf-sdf"/> apply to this document as well.</t>
      <t>Each protocol mapped using this mechanism has its own security model.
The protocol mapping mechanism defined in this document does not provide
additional security beyond what is offered by the underlying protocols.
Implementations <bcp14>MUST</bcp14> ensure that appropriate protocol-level security
mechanisms are employed when accessing affordances through the mapped
protocol operations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This section provides guidance to the Internet Assigned Numbers Authority
(IANA) regarding registration of values related to this document,
in accordance with <xref target="RFC8126"/>.</t>
      <section anchor="iana-prot-map">
        <name>Protocol Mapping</name>
        <t>IANA is requested to create a new registry called "SDF Protocol Mapping".</t>
        <t>The registry must contain the following attributes:</t>
        <ul spacing="normal">
          <li>
            <t>Protocol map name</t>
          </li>
          <li>
            <t>Protocol name</t>
          </li>
          <li>
            <t>Description</t>
          </li>
          <li>
            <t>Reference of the specification describing the protocol mapping. This specification must be reviewed by an expert.</t>
          </li>
        </ul>
        <t>The registrant of an existing entry may request updates to that entry, subject to the same expert review.
They should verify that updates preserve backward compatibility with deployed implementations, or if breaking changes are necessary, consider whether a new registry entry is more appropriate.</t>
        <t>Following protocol mappings are described in this document:</t>
        <table anchor="protmap-reg">
          <name>Protocol Mapping Registry</name>
          <thead>
            <tr>
              <th align="left">Protocol map</th>
              <th align="left">Protocol Name</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ble</td>
              <td align="left">Bluetooth Low Energy (BLE)</td>
              <td align="left">Protocol mapping for BLE devices</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">zigbee</td>
              <td align="left">Zigbee</td>
              <td align="left">Protocol mapping for Zigbee devices</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="scim-device-schema-sdf-extension">
        <name>SCIM Device Schema SDF Extension</name>
        <t>IANA is requested to create the following extensions in the SCIM
Server-Related Schema URIs registry as described in <xref target="scim-sdf-extension"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">URN</th>
              <th align="left">Description</th>
              <th align="left">Resource Type</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">urn:ietf:params:scim: schemas:extension: sdf:2.0:Device</td>
              <td align="left">SDF Extension</td>
              <td align="left">Device</td>
              <td align="left">This memo, <xref target="scim-sdf-extension"/></td>
            </tr>
          </tbody>
        </table>
      </section>
    </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-asdf-sdf">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>KTC Control AB</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="13" month="October" year="2025"/>
            <abstract>
              <t>   The Semantic Definition Format (SDF) is concerned with Things, namely
   physical objects that are available for interaction over a network.
   SDF is a format for domain experts to use in the creation and
   maintenance of data and interaction models that describe Things.  An
   SDF specification describes definitions of SDF Objects/SDF Things and
   their associated interactions (Events, Actions, Properties), as well
   as the Data types for the information exchanged in those
   interactions.  Tools convert this format to database formats and
   other serializations as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-25"/>
        </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>
        <reference anchor="I-D.ietf-scim-device-model">
          <front>
            <title>Device Schema Extensions to the SCIM model</title>
            <author fullname="Muhammad Shahzad" initials="M." surname="Shahzad">
              <organization>North Carolina State University</organization>
            </author>
            <author fullname="Hassan Iqbal" initials="H." surname="Iqbal">
              <organization>North Carolina State University</organization>
            </author>
            <author fullname="Eliot Lear" initials="E." surname="Lear">
              <organization>Cisco Systems</organization>
            </author>
            <date day="3" month="September" year="2025"/>
            <abstract>
              <t>   The initial core schema for SCIM (System for Cross-domain Identity
   Management) was designed for provisioning users.  This memo specifies
   schema extensions that enables provisioning of devices, using various
   underlying bootstrapping systems, such as Wi-fi Easy Connect, FIDO
   device onboarding vouchers, BLE passcodes, and MAC authenticated
   bypass.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scim-device-model-18"/>
        </reference>
        <reference anchor="RFC7643">
          <front>
            <title>System for Cross-domain Identity Management: Core Schema</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="K. Grizzle" initials="K." surname="Grizzle"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The System for Cross-domain Identity Management (SCIM) specifications are designed to make identity management in cloud-based applications and services easier. The specification suite builds upon experience with existing schemas and deployments, placing specific emphasis on simplicity of development and integration, while applying existing authentication, authorization, and privacy models. Its intent is to reduce the cost and complexity of user management operations by providing a common user schema and extension model as well as binding documents to provide patterns for exchanging this schema using HTTP.</t>
              <t>This document provides a platform-neutral schema and extension model for representing users and groups and other resource types in JSON format. This schema is intended for exchange and use with cloud service providers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7643"/>
          <seriesInfo name="DOI" value="10.17487/RFC7643"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="BLE53" target="https://www.bluetooth.com/specifications/specs/core-specification-5-3/">
          <front>
            <title>Bluetooth Core Specification Version 5.3</title>
            <author>
              <organization>Bluetooth SIG</organization>
            </author>
            <date year="2021" month="July" day="13"/>
          </front>
        </reference>
        <reference anchor="Zigbee22" target="https://zigbeealliance.org/solution/zigbee/">
          <front>
            <title>Zigbee 3.0 Specification</title>
            <author>
              <organization>Zigbee Alliance</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="RFC2616">
          <front>
            <title>Hypertext Transfer Protocol -- HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="J. Gettys" initials="J." surname="Gettys"/>
            <author fullname="J. Mogul" initials="J." surname="Mogul"/>
            <author fullname="H. Frystyk" initials="H." surname="Frystyk"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <date month="June" year="1999"/>
            <abstract>
              <t>HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as "HTTP/1.1", and is an update to RFC 2068. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2616"/>
          <seriesInfo name="DOI" value="10.17487/RFC2616"/>
        </reference>
        <reference anchor="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>
      </references>
    </references>
    <?line 589?>

<section anchor="cddl-definition">
      <name>CDDL Definition</name>
      <t>This appendix contains the combined CDDL definitions for the SDF protocol mappings.</t>
      <sourcecode type="cddl"><![CDATA[
<CODE BEGINS> file "sdf-protocol-map.cddl"
$$SDF-EXTENSION-DATA //= (
  sdfProtocolMap: {
    * $$SDF-PROTOCOL-MAP
  }
)

$$SDF-PROTOCOL-MAP //= (
  ble: ble-protocol-map
)

ble-protocol-map = {
  ? ble-property,
  ? read: { ble-property },
  ? write: { ble-property }
}

ble-property = (
  serviceID: text,
  characteristicID: text
)

$$SDF-PROTOCOL-MAP //= (
  ble: ble-event-map
)

ble-event-map = {
  type: "gatt" / "advertisements" / "connection_events",
  ? serviceID: text,
  ? characteristicID: text
}

$$SDF-PROTOCOL-MAP //= (
  zigbee: zigbee-protocol-map
)

zigbee-protocol-map = {
  ? zigbee-property,
  ? read: { zigbee-property },
  ? write: { zigbee-property }
}

zigbee-property = (
  endpointID: uint,
  manufacturerCode: uint,
  clusterID: uint,
  attributeID: uint,
  type: uint
)

$$SDF-PROTOCOL-MAP //= (
  zigbee: zigbee-action-map
)

zigbee-action-map = {
  endpointID: uint,
  manufacturerCode: uint,
  clusterID: uint,
  commandID: uint,
}
<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="openapi-definition">
      <name>OpenAPI Definition</name>
      <t>The following non-normative model is provided for convenience of the implementor.</t>
      <figure anchor="protocolmapmodel">
        <sourcecode markers="true" name="ProtocolMap.yaml"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

openapi: 3.0.3
info:
  title: SDF Protocol Mapping
  description: |-
    SDF Protocol Mapping. When adding a
    new protocol mapping please add a reference to the protocol map
    for all the schemas in this file.
  version: 0.10.0
externalDocs:
  description: SDF Protocol Mapping IETF draft
  url: https://datatracker.ietf.org/doc/draft-ietf-asdf-sdf-protocol\
-mapping/

paths: {}

components:
  schemas:
## Protocol Map for a property
    ProtocolMap-Property:
      type: object
      properties:
        sdfProtocolMap:
          oneOf:  
            - $ref: './ProtocolMap-BLE.yaml#/components/schemas/Prot\
ocolMap-BLE-Propmap'
            - $ref: './ProtocolMap-Zigbee.yaml#/components/schemas/P\
rotocolMap-Zigbee-Propmap'

## Protocol Map for an event
    ProtocolMap-Event:
      type: object
      properties:
        sdfProtocolMap:
          oneOf:  
            - $ref: './ProtocolMap-BLE.yaml#/components/schemas/Prot\
ocolMap-BLE-Event'
            - $ref: './ProtocolMap-Zigbee.yaml#/components/schemas/P\
rotocolMap-Zigbee-Event'
 
]]></sourcecode>
      </figure>
      <section anchor="protocol-map-for-ble">
        <name>Protocol map for BLE</name>
        <figure anchor="protocolmapble">
          <sourcecode markers="true" name="ProtocolMap-BLE.yaml"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

openapi: 3.0.3
info:
  title: SDF Protocol Mapping for BLE
  description: |-
    SDF Protocol Mapping for BLE devices.
  version: 0.10.0
externalDocs:
  description: SDF Protocol Mapping IETF draft
  url: https://datatracker.ietf.org/doc/draft-ietf-asdf-sdf-protocol\
-mapping/

paths: {}

components:
  schemas:
## Protocol Mapping for BLE Property
    ProtocolMap-BLE-Propmap:
      required:
        - ble
      type: object
      properties:
        ble:
          required:
            - serviceID
            - characteristicID
          type: object
          properties:
            serviceID:
              type: string
              format: uuid
              example: 00001809-0000-1000-8000-00805f9b34fb
            characteristicID:
              type: string
              format: uuid
              example: 00002a1c-0000-1000-8000-00805f9b34fb
              
## Defines different types of BLE events
    ProtocolMap-BLE-Event:
      required:
        - ble
      type: object
      properties:
        ble:
          required:
            - type
          type: object
          properties:
            type:
              type: string
              example: gatt
              enum:
                - gatt
                - connection_events
                - advertisements
            serviceID:
              type: string
              example: 00001809-0000-1000-8000-00805f9b34fb
            characteristicID:
              type: string
              example: 00002a1c-0000-1000-8000-00805f9b34fb
]]></sourcecode>
        </figure>
      </section>
      <section anchor="protocol-map-for-zigbee">
        <name>Protocol map for Zigbee</name>
        <figure anchor="protocolmapzigbee">
          <sourcecode markers="true" name="ProtocolMap-Zigbee.yaml"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

openapi: 3.0.3
info:
  title: SDF Protocol Mapping for Zigbee
  description: |-
    SDF Protocol Mapping for Zigbee devices.
  version: 0.10.0
externalDocs:
  description: SDF Protocol Mapping IETF draft
  url: https://datatracker.ietf.org/doc/draft-ietf-asdf-sdf-protocol\
-mapping/

paths: {}

components:
  schemas:
## Protocol mapping for Zigbee property
    ProtocolMap-Zigbee-Propmap:
      required:
        - zigbee
      type: object
      properties:
        zigbee:
          required:
            - endpointID
            - clusterID
            - attributeID
          type: object
          properties:
            endpointID:
              type: integer
              format: int32
              example: 1
            clusterID:
              type: integer
              format: int32
              example: 6
            attributeID:
              type: integer
              format: int32
              example: 16
            type:
              type: integer
              format: int32
              example: 1

    ProtocolMap-Zigbee-Event:
      allOf:  
        - $ref: '#/components/schemas/ProtocolMap-Zigbee-Propmap'
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
