<?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.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-asdf-sdf-protocol-mapping-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="sdf-protocol-mapping">SDF Protocol Mapping</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-protocol-mapping-07"/>
    <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="April" day="21"/>
    <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 implementers 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 syntax extensions to <xref target="RFC9880"/> in terms of its JSON structures are
shown in the Concise Data Definition Language (CDDL) <xref target="RFC8610"/>.</t>
      <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 a protocol name registered in the IANA "SDF Protocol Mapping"
registry (<xref target="iana-prot-map"/>), 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 section="A" sectionFormat="of" target="RFC9880"/>. 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 section="A" sectionFormat="of" target="RFC9880"/> 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"), implementers <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 section="A" sectionFormat="of" target="RFC9880"/> 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, implementers <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 section="A" sectionFormat="of" target="RFC9880"/> 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 implementers. -->

</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[=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "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>
        <sourcecode type="json"><![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:\
                                            extension:sdf:2.0:Device"
    }
}
]]></sourcecode>
      </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 Name</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, <xref target="ble-pm"/></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, <xref target="zigbee-pm"/></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 anchor="iana-scim">
          <name>SCIM Device Schema SDF Extension</name>
          <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 document, <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 814?>

<section anchor="cddl-definition">
      <name>CDDL Definition</name>
      <t>This appendix contains the combined CDDL definitions for the SDF protocol mappings.</t>
      <figure anchor="sdf-protocol-map-cddl">
        <name>CDDL for SDF protocol mappings</name>
        <sourcecode type="cddl" name="sdf-protocol-map.cddl" markers="true"><![CDATA[
$$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,
}

]]></sourcecode>
      </figure>
    </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 implementer.</t>
      <figure anchor="protocolmapmodel">
        <name>OpenAPI model</name>
        <sourcecode type="yaml" name="ProtocolMap.yaml" markers="true"><![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/\
                                             ProtocolMap-BLE-Propmap'
            - $ref: './ProtocolMap-Zigbee.yaml#/components/schemas/\
                                          ProtocolMap-Zigbee-Propmap'

## Protocol Map for an event
    ProtocolMap-Event:
      type: object
      properties:
        sdfProtocolMap:
          oneOf:  
            - $ref: './ProtocolMap-BLE.yaml#/components/schemas/\
                                               ProtocolMap-BLE-Event'
            - $ref: './ProtocolMap-Zigbee.yaml#/components/schemas/\
                                            ProtocolMap-Zigbee-Event'
 
]]></sourcecode>
      </figure>
      <section anchor="protocol-map-for-ble">
        <name>Protocol map for BLE</name>
        <figure anchor="protocolmapble">
          <name>OpenAPI model for BLE</name>
          <sourcecode type="yaml" name="ProtocolMap-BLE.yaml" markers="true"><![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">
          <name>OpenAPI model for Zigbee</name>
          <sourcecode type="yaml" name="ProtocolMap-Zigbee.yaml" markers="true"><![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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

-->

</rfc>
