<?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-04" 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-04"/>
    <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="February" day="18"/>
    <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="RFC9880"/> 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="RFC9880"/> 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="RFC9880"/> 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="RFC9880">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="M. Koster" initials="M." role="editor" surname="Koster"/>
            <author fullname="C. Bormann" initials="C." role="editor" surname="Bormann"/>
            <author fullname="A. Keränen" initials="A." surname="Keränen"/>
            <date month="January" year="2026"/>
            <abstract>
              <t>The Semantic Definition Format (SDF) is a format for domain experts to use in the creation and maintenance of data and interaction models that describe Things, i.e., physical objects that are available for interaction over a network. An SDF specification describes definitions of SDF Objects/SDF Things and their associated interactions (Events, Actions, and 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="RFC" value="9880"/>
          <seriesInfo name="DOI" value="10.17487/RFC9880"/>
        </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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
cJJYAAA=

-->

</rfc>
