<?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-06" 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">SDF Protocol Mapping</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-protocol-mapping-06"/>
    <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="March" day="02"/>
    <area>Applications and Real-Time</area>
    <workgroup>A Semantic Definition Format for Data and Interactions of Things</workgroup>
    <keyword>IoT</keyword>
    <abstract>
      <?line 67?>

<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.
This document also describes a method to extend SCIM with an SDF model mapping.</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 76?>

<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). When implementing an SDF model for a
device using specific communication protocols, there needs to be a mechanism to
map the protocol-agnostic SDF definitions to protocol-specific operations,
translating the model into a real-world implementation. Moreover, such a mechanism
needs to be extensible for enabling implementors to provide novel SDF protocol
mappings to expand the SDF ecosystem. SDF protocol mappings may target a variety
of protocols spanning from non-IP protocols commonly used in IoT environments,
such as <xref target="BLE53"/> and <xref target="Zigbee30"/>, to IP-based protocols such as HTTP
<xref target="RFC9110"/> and CoAP <xref target="RFC7252"/>. This document provides the required
mechanism by defining:</t>
      <ul spacing="normal">
        <li>
          <t>The <tt>sdfProtocolMap</tt> keyword, which allows SDF models to include
protocol-specific mapping information attached to the protocol-agnostic
definitions, see <xref target="sdf-pm"/>. An <tt>sdfProtocolMap</tt> <bcp14>MAY</bcp14> be applied to an SDF
affordance, be it an <tt>sdfProperty</tt>, <tt>sdfEvent</tt> or <tt>sdfAction</tt>. The mapping
enables use cases such as application gateways or multi-protocol gateways that
translate between different IoT protocols, automated generation of
protocol-specific implementations from SDF models, and interoperability across
heterogeneous device ecosystems.</t>
        </li>
        <li>
          <t>Two SDF protocol mappings for Bluetooth and Zigbee protocols, see <xref target="ble-pm"/>
and <xref target="zigbee-pm"/> respectively.</t>
        </li>
        <li>
          <t>An SDF model extension for SCIM. While SDF provides a way to describe a class
of devices, SCIM describes a device instance. The SDF model extension for SCIM
enables the inclusion of SDF models for the class of devices a device belongs
to in the SCIM object, see <xref target="scim-sdf-extension"/>.</t>
        </li>
        <li>
          <t>An IANA registry for defining additional SDF protocol mappings (in addition to
the BLE and Zigbee provided in this document), see <xref target="iana-prot-map"/>.</t>
        </li>
      </ul>
    </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="sdf-pm">
      <name>SDF Protocol Mapping Structure</name>
      <t>This section defines the structure of an <tt>sdfProtocolMap</tt>. Because each protocol
has its own addressing model, a single SDF affordance requires a distinct
mapping per protocol. For example, BLE addresses a property as a service
characteristic, while Zigbee addresses it 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, nested inside an SDF affordance definition (<tt>sdfProperty</tt>, <tt>sdfAction</tt>,
or <tt>sdfEvent</tt>). Protocol-specific attributes are embedded within this object,
keyed by an IANA registered protocol name, e.g., "ble" or "zigbee".</t>
      <figure anchor="protmap">
        <name>SDF Protocol Mapping Structure</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="400" viewBox="0 0 400 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 24,48 L 24,64" fill="none" stroke="black"/>
              <path d="M 104,80 L 104,224" fill="none" stroke="black"/>
              <path d="M 176,112 L 176,128" fill="none" stroke="black"/>
              <path d="M 176,176 L 176,192" fill="none" stroke="black"/>
              <path d="M 24,64 L 72,64" fill="none" stroke="black"/>
              <path d="M 104,96 L 152,96" fill="none" stroke="black"/>
              <path d="M 176,128 L 200,128" fill="none" stroke="black"/>
              <path d="M 104,160 L 152,160" fill="none" stroke="black"/>
              <path d="M 176,192 L 200,192" fill="none" stroke="black"/>
              <path d="M 104,224 L 152,224" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="208,192 196,186.4 196,197.6" fill="black" transform="rotate(0,200,192)"/>
              <polygon class="arrowhead" points="208,128 196,122.4 196,133.6" fill="black" transform="rotate(0,200,128)"/>
              <polygon class="arrowhead" points="160,224 148,218.4 148,229.6" fill="black" transform="rotate(0,152,224)"/>
              <polygon class="arrowhead" points="160,160 148,154.4 148,165.6" fill="black" transform="rotate(0,152,160)"/>
              <polygon class="arrowhead" points="160,96 148,90.4 148,101.6" fill="black" transform="rotate(0,152,96)"/>
              <polygon class="arrowhead" points="80,64 68,58.4 68,69.6" fill="black" transform="rotate(0,72,64)"/>
              <g class="text">
                <text x="48" y="36">sdfProperty</text>
                <text x="104" y="36">/</text>
                <text x="152" y="36">sdfAction</text>
                <text x="200" y="36">/</text>
                <text x="244" y="36">sdfEvent</text>
                <text x="140" y="68">sdfProtocolMap</text>
                <text x="176" y="100">ble</text>
                <text x="260" y="132">BLE-specific</text>
                <text x="344" y="132">mapping</text>
                <text x="188" y="164">zigbee</text>
                <text x="272" y="196">Zigbee-specific</text>
                <text x="368" y="196">mapping</text>
                <text x="176" y="228">...</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
sdfProperty / sdfAction / sdfEvent
  |
  +-----> sdfProtocolMap
            |
            +-----> ble
            |        |
            |        +--> BLE-specific mapping
            |
            +-----> zigbee
            |        |
            |        +--> Zigbee-specific mapping
            |
            +-----> ...
]]></artwork>
        </artset>
      </figure>
      <section anchor="sdf-extension-points">
        <name>SDF Extension Points</name>
        <t>The <tt>sdfProtocolMap</tt> keyword is introduced into SDF affordance definitions
through the extension points defined in the formal syntax of <xref target="RFC9880"/>
(Appendix A). For each affordance type, an <tt>sdfProtocolMap</tt> entry is added
via the corresponding CDDL group socket. The contents of the
<tt>sdfProtocolMap</tt> object are in turn extensible through a
protocol-mapping-specific group socket.</t>
        <t>A protocol <bcp14>MAY</bcp14> choose to extend only the affordance types that are applicable to
it. For example, the BLE protocol mapping defines extensions for properties and
events but not for actions.</t>
        <section anchor="property-extension">
          <name>Property Extension</name>
          <t>The <tt>$$SDF-EXTENSION-PROPERTY</tt> group socket in the <tt>propertyqualities</tt>
rule of <xref target="RFC9880"/> (Appendix A) is used to add protocol mapping to
<tt>sdfProperty</tt> definitions:</t>
          <figure anchor="sdf-prop-ext">
            <name>SDF Property Extension Point for Protocol Mapping</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-EXTENSION-PROPERTY //= (
  sdfProtocolMap: {
    * $$SDF-PROPERTY-PROTOCOL-MAP
  }
)

property-protocol-map<name, props> = (
  name => props /
    {
      read: props,
      write: props
    }
)
]]></sourcecode>
          </figure>
          <t>The <tt>property-protocol-map</tt> generic (<xref target="sdf-prop-ext"/>) captures the common
structure of property protocol mappings. The <tt>name</tt> parameter is the protocol
name and <tt>props</tt> is the protocol-specific map of attributes. A protocol can
provide either:</t>
          <ul spacing="normal">
            <li>
              <t>A single mapping that applies to both read and write operations, or</t>
            </li>
            <li>
              <t>Separate <tt>read</tt> and <tt>write</tt> mappings when the protocol uses different
attributes for each direction.</t>
            </li>
          </ul>
          <t>To extend <tt>$$SDF-PROPERTY-PROTOCOL-MAP</tt> for a new protocol (e.g.,
"new-protocol"), implementors <bcp14>MUST</bcp14> use the <tt>property-protocol-map</tt> generic with
the protocol name and a map type defining the protocol-specific attributes.</t>
          <t>It is to be noted that the protocol <tt>name</tt> (e.g., "new-protocol") <bcp14>MUST</bcp14> be
registered in the IANA registry defined in <xref target="iana-prot-map"/>.</t>
          <t>For example:</t>
          <figure anchor="prop-ext-example">
            <name>Example Property Protocol Map Extension</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-PROPERTY-PROTOCOL-MAP //= (
  property-protocol-map<"new-protocol", new-protocol-property>
)

new-protocol-property = {
  attributeA: text,
  attributeB: uint
}
]]></sourcecode>
          </figure>
          <t>The corresponding JSON in an SDF model looks like:</t>
          <figure anchor="prop-ext-json-example">
            <name>Example Property Protocol Map in JSON</name>
            <sourcecode type="json"><![CDATA[
{
  "sdfProperty": {
    "temperature": {
      "type": "number",
      "unit": "Cel",
      "sdfProtocolMap": {
        "new-protocol": {
          "attributeA": "temperature-service",
          "attributeB": 1
        }
      }
    }
  }
}
]]></sourcecode>
          </figure>
          <t>When a property uses different protocol attributes for read and write
operations, the mapping can be split:</t>
          <figure anchor="prop-ext-rw-json-example">
            <name>Example Property Protocol Map with Read/Write in JSON</name>
            <sourcecode type="json"><![CDATA[
{
  "sdfProperty": {
    "temperature": {
      "type": "number",
      "unit": "Cel",
      "sdfProtocolMap": {
        "new-protocol": {
          "read": {
            "attributeA": "temperature-read-service",
            "attributeB": 1
          },
          "write": {
            "attributeA": "temperature-write-service",
            "attributeB": 2
          }
        }
      }
    }
  }
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="action-extension">
          <name>Action Extension</name>
          <t>The <tt>$$SDF-EXTENSION-ACTION</tt> group socket in the <tt>actionqualities</tt>
rule of <xref target="RFC9880"/> (Appendix A) is used to add protocol mapping to
<tt>sdfAction</tt> definitions:</t>
          <figure anchor="sdf-action-ext">
            <name>SDF Action Extension Point for Protocol Mapping</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-EXTENSION-ACTION //= (
  sdfProtocolMap: {
    * $$SDF-ACTION-PROTOCOL-MAP
  }
)
]]></sourcecode>
          </figure>
          <t>Actions use a simpler structure than properties, as they do not require the
read/write distinction. To extend <tt>$$SDF-ACTION-PROTOCOL-MAP</tt> for a new
protocol, implementors <bcp14>MUST</bcp14> add a group entry that maps the protocol name to the
protocol-specific attributes:</t>
          <figure anchor="action-ext-example">
            <name>Example Action Protocol Map Extension</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-ACTION-PROTOCOL-MAP //= (
  "new-protocol": new-protocol-action
)

new-protocol-action = {
  commandID: uint
}
]]></sourcecode>
          </figure>
          <t>The corresponding JSON in an SDF model would look like:</t>
          <figure anchor="action-ext-json-example">
            <name>Example Action Protocol Map in JSON</name>
            <sourcecode type="json"><![CDATA[
{
  "sdfAction": {
    "reset": {
      "sdfProtocolMap": {
        "new-protocol": {
          "commandID": 42
        }
      }
    }
  }
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="event-extension">
          <name>Event Extension</name>
          <t>The <tt>$$SDF-EXTENSION-EVENT</tt> group socket in the <tt>eventqualities</tt>
rule of <xref target="RFC9880"/> (Appendix A) is used to add protocol mapping to
<tt>sdfEvent</tt> definitions:</t>
          <figure anchor="sdf-event-ext">
            <name>SDF Event Extension Point for Protocol Mapping</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-EXTENSION-EVENT //= (
  sdfProtocolMap: {
    * $$SDF-EVENT-PROTOCOL-MAP
  }
)
]]></sourcecode>
          </figure>
          <t>Events follow the same simple pattern as actions. To extend
<tt>$$SDF-EVENT-PROTOCOL-MAP</tt> for a new protocol:</t>
          <figure anchor="event-ext-example">
            <name>Example Event Protocol Map Extension</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-EVENT-PROTOCOL-MAP //= (
  "new-protocol": new-protocol-event
)

new-protocol-event = {
  eventID: uint
}
]]></sourcecode>
          </figure>
          <t>The corresponding JSON in an SDF model looks like:</t>
          <figure anchor="event-ext-json-example">
            <name>Example Event Protocol Map in JSON</name>
            <sourcecode type="json"><![CDATA[
{
  "sdfEvent": {
    "alert": {
      "sdfProtocolMap": {
        "new-protocol": {
          "eventID": 3
        }
      }
    }
  }
}
]]></sourcecode>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="protocol-registration">
      <name>New Protocol Registration Procedure</name>
      <t>Protocol names used as keys in the <tt>sdfProtocolMap</tt> object (e.g., "ble",
"zigbee") <bcp14>MUST</bcp14> be registered in the IANA registry defined in
<xref target="iana-prot-map"/>.</t>
      <t>A new SDF protocol mapping <bcp14>MUST</bcp14> be defined by a specification that mandatorily
includes:</t>
      <ul spacing="normal">
        <li>
          <t>A CDDL definition that extends at least one of the group sockets
defined in this document:
<tt>$$SDF-PROPERTY-PROTOCOL-MAP</tt> (<xref target="property-extension"/>),
<tt>$$SDF-ACTION-PROTOCOL-MAP</tt> (<xref target="action-extension"/>), or
<tt>$$SDF-EVENT-PROTOCOL-MAP</tt> (<xref target="event-extension"/>).
Property mappings <bcp14>SHOULD</bcp14> use the <tt>property-protocol-map</tt> generic
(<xref target="property-extension"/>) to ensure a consistent structure.</t>
        </li>
        <li>
          <t>A description of the protocol-specific attributes introduced by the
CDDL extension, including their semantics and how they relate to the
underlying protocol operations.</t>
        </li>
      </ul>
      <!-- LC: Should we consider adding an appendix showing the whole process to
create a fictitious new protocol? It may be of help to implementors. -->

</section>
    <section anchor="registered-protocol-mappings">
      <name>Registered Protocol Mappings</name>
      <t>This section defines the protocol mappings registered by this document.</t>
      <section anchor="ble-pm">
        <name>BLE</name>
        <t>The BLE protocol mapping allows SDF models to specify how properties and events
<bcp14>SHOULD</bcp14> be accessed using Bluetooth Low Energy (BLE) protocol <xref target="BLE53"/>. The
mapping includes details such as service IDs and characteristic IDs that are
used to access the corresponding SDF affordances.</t>
        <section anchor="properties">
          <name>Properties</name>
          <t>For <tt>sdfProperty</tt>, the BLE protocol mapping structure is defined as follows:</t>
          <figure anchor="blemap1">
            <name>CDDL definition for BLE Protocol Mapping for sdfProperty</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-PROPERTY-PROTOCOL-MAP //= (
  property-protocol-map<"ble", 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.</t>
            </li>
            <li>
              <t><tt>characteristicID</tt> is the BLE characteristic ID that corresponds to the SDF property.</t>
            </li>
          </ul>
          <t>For example, a BLE protocol mapping for a temperature property:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfProperty": {
    "temperature": {
      "sdfProtocolMap": {
        "ble": {
          "serviceID": "00001809-0000-1000-8000-00805f9b34fb",
          "characteristicID": "00002a1c-0000-1000-8000-00805f9b34fb"
        }
      }
    }
  }
}
]]></sourcecode>
          <t>For a temperature property that has different mappings for read and write operations,
here is an example of the BLE protocol mapping:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfProperty": {
    "temperature": {
      "sdfProtocolMap": {
        "ble": {
          "read": {
            "serviceID": "00001809-0000-1000-8000-00805f9b34fb",
            "characteristicID": "00002a1c-0000-1000-8000-00805f9b34fb"
          },
          "write": {
            "serviceID": "00001809-0000-1000-8000-00805f9b34fb",
            "characteristicID": "00002a51-0000-1000-8000-00805f9b34fb"
          }
        }
      }
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="events">
          <name>Events</name>
          <t>For <tt>sdfEvent</tt>s, the BLE protocol mapping structure is similar to
<tt>sdfProperties</tt>, but it <bcp14>MUST</bcp14> include additional attributes such as the <tt>type</tt> of
the event.</t>
          <figure anchor="blemap2">
            <name>BLE Protocol Mapping for sdfEvents</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-EVENT-PROTOCOL-MAP //= (
  ble: ble-event-map
)

ble-event-map = {
  type: "gatt",
  serviceID: text,
  characteristicID: text
} / { type: "advertisements" } / { type: "connection_events" }
]]></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>
          <!-- LC: Is there a way to make serviceID and characteristicID mandatory only if
the type is gatt? The current solution allows a connection event to have a
serviceID, or characteristicID, or both. -->

<t>For example, a BLE event mapping for a heart rate measurement event:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfEvent": {
    "heartRate": {
      "sdfProtocolMap": {
        "ble": {
          "type": "gatt",
          "serviceID": "0000180d-0000-1000-8000-00805f9b34fb",
          "characteristicID": "00002a37-0000-1000-8000-00805f9b34fb"
        }
      }
    }
  }
}
]]></sourcecode>
          <t>Here is an example of an <tt>isPresent</tt> event using BLE advertisements:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfEvent": {
    "isPresent": {
      "sdfProtocolMap": {
        "ble": {
          "type": "advertisements"
        }
      }
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="zigbee-pm">
        <name>Zigbee</name>
        <t>The Zigbee protocol mapping allows SDF models to specify how properties,
actions, and events should be accessed using the Zigbee protocol <xref target="Zigbee30"/>.
The mapping includes details such as cluster IDs and attribute IDs that are used
to access the corresponding SDF affordances.</t>
        <section anchor="properties-1">
          <name>Properties</name>
          <t>An <tt>sdfProperty</tt> <bcp14>SHOULD</bcp14> be mapped to a Zigbee cluster attribute. The Zigbee property
protocol mapping structure is defined as follows:</t>
          <figure anchor="zigmap1">
            <name>CDDL definition for Zigbee Protocol Mapping for sdfProperty</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-PROPERTY-PROTOCOL-MAP //= (
  property-protocol-map<"zigbee", zigbee-property>
)

zigbee-property = {
  endpointID: uint,
  clusterID: uint,
  attributeID: uint,
  attributeType: uint,
  ? manufacturerCode: uint,
}
]]></sourcecode>
          </figure>
          <t>Where:</t>
          <ul spacing="normal">
            <li>
              <t><tt>endpointID</tt> is the Zigbee endpoint ID that corresponds to the SDF property.</t>
            </li>
            <li>
              <t><tt>clusterID</tt> is the Zigbee cluster ID that corresponds to the SDF property.</t>
            </li>
            <li>
              <t><tt>attributeID</tt> is the Zigbee attribute ID that corresponds to the SDF property.</t>
            </li>
            <li>
              <t><tt>attributeType</tt> is the Zigbee data type of the attribute.</t>
            </li>
            <li>
              <t><tt>manufacturerCode</tt> is the Zigbee manufacturer code of the attribute (optional).</t>
            </li>
          </ul>
          <t>For example, a Zigbee protocol mapping for a temperature property may look as
follows:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfProperty": {
    "temperature": {
      "sdfProtocolMap": {
        "zigbee": {
          "endpointID": 1,
          "clusterID": 1026, // 0x0402
          "attributeID": 0, // 0x0000
          "attributeType": 41 // 0x29
        }
      }
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="events-1">
          <name>Events</name>
          <t>An <tt>sdfEvent</tt> <bcp14>SHOULD</bcp14> be mapped to Zigbee cluster attribute reporting. The Zigbee event
protocol mapping structure is defined as follows:</t>
          <figure anchor="zigmap-event">
            <name>CDDL definition for Zigbee Protocol Mapping for sdfEvents</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-EVENT-PROTOCOL-MAP //= (
  zigbee: zigbee-event-map
)

zigbee-event-map = {
  endpointID: uint,
  clusterID: uint,
  attributeID: uint,
  attributeType: uint,
  ? manufacturerCode: uint,
}
]]></sourcecode>
          </figure>
          <t>Where:</t>
          <ul spacing="normal">
            <li>
              <t><tt>endpointID</tt> is the Zigbee endpoint ID that corresponds to the SDF event.</t>
            </li>
            <li>
              <t><tt>clusterID</tt> is the Zigbee cluster ID that corresponds to the SDF event.</t>
            </li>
            <li>
              <t><tt>attributeID</tt> is the Zigbee attribute ID that corresponds to the SDF event.</t>
            </li>
            <li>
              <t><tt>attributeType</tt> is the Zigbee data type of the attribute.</t>
            </li>
            <li>
              <t><tt>manufacturerCode</tt> is the Zigbee manufacturer code of the attribute (optional).</t>
            </li>
          </ul>
          <t>For example, a Zigbee event mapping for a temperature change report:</t>
          <sourcecode type="json"><![CDATA[
{
  "sdfEvent": {
    "temperatureChange": {
      "sdfProtocolMap": {
        "zigbee": {
          "endpointID": 1,
          "clusterID": 1026, // 0x0402
          "attributeID": 0, // 0x0000
          "attributeType": 41 // 0x29
        }
      }
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="actions">
          <name>Actions</name>
          <t>An <tt>sdfAction</tt> <bcp14>SHOULD</bcp14> be mapped to a Zigbee cluster command. The Zigbee protocol
mapping structure for actions is defined as follows:</t>
          <figure anchor="zigmap2">
            <name>CDDL definition for Zigbee Protocol Mapping for sdfAction</name>
            <sourcecode type="cddl"><![CDATA[
$$SDF-ACTION-PROTOCOL-MAP //= (
  zigbee: zigbee-action-map
)

zigbee-action-map = {
  endpointID: uint,
  clusterID: uint,
  commandID: uint,
  ? manufacturerCode: 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>
            <li>
              <t><tt>manufacturerCode</tt> is the Zigbee manufacturer code of the command (optional).</t>
            </li>
          </ul>
          <t>For example, a Zigbee protocol mapping to set a temperature:</t>
          <sourcecode type="json"><![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 class and SCIM defines a device
instance, a method is needed to associate a mapping between an instance of a
device and its associated SDF models. To accomplish so, this document defines
a SCIM extension that <bcp14>MAY</bcp14> 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>Here is an example SCIM device schema extension with SDF models:</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>
      <t>An SDF model <bcp14>MUST</bcp14> be referenced with the <tt>sdf</tt> keyword inside the SCIM device
schema as described in <xref target="I-D.ietf-scim-device-model"/>.</t>
    </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 registration policy for this registry is "Specification Required" as
defined in Section 4.6 of <xref target="RFC8126"/>.</t>
        <t>The registry must contain the following attributes:</t>
        <ul spacing="normal">
          <li>
            <t>Protocol map name, as per <tt>sdfProtocolMap</tt></t>
          </li>
          <li>
            <t>Protocol name</t>
          </li>
          <li>
            <t>Description</t>
          </li>
          <li>
            <t>Reference of the specification describing the protocol mapping.</t>
          </li>
        </ul>
        <t>The specification requirements for a registration request are
defined in <xref target="protocol-registration"/>.</t>
        <t>The designated expert(s) <bcp14>SHOULD</bcp14> verify that the protocol map name is appropriate and not likely to cause confusion with existing entries.</t>
        <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>The 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 extension 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="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="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="Zigbee30" target="https://csa-iot.org/all-solutions/zigbee/">
          <front>
            <title>Zigbee 3.0 Specification</title>
            <author>
              <organization>CSA IoT</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </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 802?>

<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-PROPERTY //= (
  sdfProtocolMap: {
    * $$SDF-PROPERTY-PROTOCOL-MAP
  }
)

property-protocol-map<name, props> = (
  name => props /
    {
      read: props,
      write: props
    }
)

$$SDF-EXTENSION-ACTION //= (
  sdfProtocolMap: {
    * $$SDF-ACTION-PROTOCOL-MAP
  }
)

$$SDF-EXTENSION-EVENT //= (
  sdfProtocolMap: {
    * $$SDF-EVENT-PROTOCOL-MAP
  }
)

$$SDF-PROPERTY-PROTOCOL-MAP //= (
  property-protocol-map<"ble", ble-property>
)

ble-property = {
  serviceID: text,
  characteristicID: text
}

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

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

$$SDF-PROPERTY-PROTOCOL-MAP //= (
  property-protocol-map<"zigbee", zigbee-property>
)

zigbee-property = {
  endpointID: uint,
  clusterID: uint,
  attributeID: uint,
  attributeType: uint,
  ? manufacturerCode: uint,
}

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

zigbee-event-map = {
  endpointID: uint,
  clusterID: uint,
  attributeID: uint,
  attributeType: uint,
  ? manufacturerCode: uint,
}

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

zigbee-action-map = {
  endpointID: uint,
  clusterID: uint,
  commandID: uint,
  ? manufacturerCode: uint,
}

<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="openapi-definition">
      <name>OpenAPI Definition</name>
      <!-- LC: Maybe we need some text to explain why all of a sudden there is some
OpenAPI specifications. -->

<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:
          oneOf:
            - type: object
              required:
                - type
                - serviceID
                - characteristicID
              properties:
                type:
                  type: string
                  example: gatt
                  enum:
                    - gatt
                serviceID:
                  type: string
                  example: 00001809-0000-1000-8000-00805f9b34fb
                characteristicID:
                  type: string
                  example: 00002a1c-0000-1000-8000-00805f9b34fb
            - type: object
              required:
                - type
              properties:
                type:
                  type: string
                  example: advertisements
                  enum:
                    - advertisements
            - type: object
              required:
                - type
              properties:
                type:
                  type: string
                  example: connection_events
                  enum:
                    - connection_events
]]></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="acknowledgements">
      <name>Acknowledgements</name>
      <!-- LC: We need to add all the names of the ASDF WG that contributed with discussions, reviews, etc. -->

<t>This document relies on SDF models described in <xref target="RFC9880"/>, as such, we are grateful to the authors of this document for putting their time and effort into defining SDF in depth, allowing us to make use of it. The authors would also like to thank the ASDF working group for their excellent feedback and steering of the document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
n0JmFAqXBGPF7NfT4L9Wc7le/NS9NSK4agDmQ0RWrq6dYvzYucSor+5+nE/r
mkVqa19ZKfsPIebBgo6f+4T9oQQ8SLIfU0o+5TT7wfkDJ3zNy/8u46/kHx7I
gur7Fa+n7PQAxKxweZQDtanX4zhnv7Xj86M5PfxBvo+fR/+juT81KwYrwy8/
8Fhn0Lxz2je0aToTs4ErVKRfyr6QycGUrjv5pA93j5ykT60/gj/BcSPSFQ4J
3N3fK92z6t31bhSZpMfu56l3w82yPfqI/K7q8O8RuLZKQj2Hi0eRH6LaKHJl
ILoq0r4XNJUM0wld/eHbOJlHYnSj7c6ypw5hFaMvG2MeSfqFAJvL+0Fn8fTh
dybxow7o0om0PmLJD9+YGvBYT5+uQhqFcpjTr7HKpl6Xhj9ENrS5PHfZLxV0
iHYSu/tfS+toqnJI/dhLPpw0MdWI68A3WEo1ziOTulK/wigrVa/qdPs8Mz/Y
FqYA0foUaoGlMpn6dQN7DDWSEmIhwyyD3rjJO+bSbmvHdX/oJtQVtaZndXAj
/Q4gVgnoBfz4bcG2uf5ZVnWil17cCrGsfSiiiIgF9uMSGpEHCijSUP0AI5V+
2jOR/hdw+LI1dncAAA==

-->

</rfc>
