<?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-ivy-entitlement-inventory-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="entitlement-inventory">A YANG Module for Entitlement Inventory</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ivy-entitlement-inventory-02"/>
    <author initials="M." surname="Palmero" fullname="Marisol Palmero">
      <organization>Independent</organization>
      <address>
        <email>marisol.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="C." surname="Cardona" fullname="Camilo Cardona">
      <organization>NTT</organization>
      <address>
        <email>camilo@gin.ntt.net</email>
      </address>
    </author>
    <author initials="D." surname="Lopez" fullname="Diego Lopez">
      <organization>Telefonica</organization>
      <address>
        <email>diego.r.lopez@telefonica.com</email>
      </address>
    </author>
    <author initials="I." surname="Busi" fullname="Italo Busi">
      <organization>Huawei</organization>
      <address>
        <email>italo.busi@huawei.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="27"/>
    <area>Operations and Management</area>
    <workgroup>Network Inventory YANG WG</workgroup>
    <keyword>inventory</keyword>
    <keyword>capability</keyword>
    <keyword>entitlement</keyword>
    <keyword>licensing</keyword>
    <abstract>
      <?line 45?>

<t>This document defines a YANG data model for managing software-based entitlements (licenses, authorization tokens, pay-as-you-go service credentials…) within a network inventory. The model represents the relationship between organizational entitlements, network element capabilities, and the constraints that entitlements impose on capability usage.</t>
      <t>This data model enables operators to determine what capabilities their network elements possess, which capabilities are currently entitled for use, and what restrictions apply. The model supports both centralized entitlement management and device-local entitlement tracking for physical and virtual network elements.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://dr2lopez.github.io/ivy-capability-entitlement/draft-ietf-ivy-entitlement-inventory.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-ivy-entitlement-inventory/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Network Inventory YANG WG Working Group mailing list (<eref target="mailto:inventory-yang@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/inventory-yang/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/inventory-yang/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dr2lopez/ivy-capability-entitlement"/>.</t>
    </note>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Network elements provide capabilities‚ i.e., functions related to their role in the network, such as MPLS routing, advanced QoS, or bandwidth throughput, which operators use to build services. Many capabilities require an evidence item for the right to use them, issued by the network element vendor, for their activation. These evidence items are called entitlements, and can take different forms, such as software licenses, access tokens or credentials for as-a-service consumption.</t>
      <t>This document defines a YANG data model for tracking entitlements and their relationship to capabilities. The model supports three operational use cases:</t>
      <ul spacing="normal">
        <li>
          <t>Tracking entitlements held by the organization, their scope, and assigned holders</t>
        </li>
        <li>
          <t>Representing capabilities available on network elements and whether entitlements permit their use</t>
        </li>
        <li>
          <t>Monitoring active capability usage and enforced restrictions</t>
        </li>
      </ul>
      <t>Operators use this information to answer: What can this device do? What is it entitlement-id to do? What restrictions apply?</t>
      <t>As network technology evolves toward modular, software-defined, and virtualized architectures, managing the rights to activate specific functions becomes increasingly complex. These rights, granted via entitlements, must be tracked, aggregated, and matched to assets to ensure that services can be delivered using available capabilities. This complexity calls for structured, machine-readable models that represent which capabilities are available, permitted, and in use.</t>
      <t>This draft provides a foundational YANG structure for representing these relationships as standardized data, complementing the network inventory module.</t>
      <section anchor="scope-of-the-entitlement-model">
        <name>Scope of the Entitlement Model</name>
        <t>The entitlement model provides an inventory of entitlements. This includes the entitled holders and the capabilities to which they are entitled. Additionally, it offers information into the restrictions of the operation of the different assets (network elements and components). In general, this model seeks to address the following questions:</t>
        <ul spacing="normal">
          <li>
            <t>What entitlements are administered/owned by the organization?</t>
          </li>
          <li>
            <t>How are entitlements restricted to some assets and holders?</t>
          </li>
          <li>
            <t>What entitlements are installed on each network asset?</t>
          </li>
          <li>
            <t>What constraints do the current installed entitlements impose on the network assets' functionality?</t>
          </li>
          <li>
            <t>Does the entitlement impose any kind of global restrictions? What are they?</t>
          </li>
          <li>
            <t>What are the restrictions that each network element has due to the entitlements it holds locally?</t>
          </li>
        </ul>
        <t>In this document, the term "installed entitlements" refers to entitlements that have been assigned to a particular network asset. The act of installation may involve directly provisioning the entitlement on the device or component, or it may represent a logical assignment in a centralized system. Some entitlements may be assigned to multiple network assets up to a defined limit; such constraints can be modelled as global restrictions under the entitlement.</t>
        <t>The model supports entitlement tracking and capability management. It is intentionally designed to be extensible through YANG augmentation. Organizations requiring vendor-specific entitlement features should augment this base model rather than modifying it directly.</t>
        <t>This model focuses on operational inventory of entitlements and capabilities. The following are explicitly out of scope:</t>
        <ul spacing="normal">
          <li>
            <t>Commercial aspects of entitlement acquisition and pricing</t>
          </li>
          <li>
            <t>Entitlement migration policies between devices (vendor-specific)</t>
          </li>
          <li>
            <t>Per-user access control mechanisms (covered by separate access control standards)</t>
          </li>
        </ul>
        <t>This model focuses on the ability to use capabilities, not on access control mechanisms. For example, if a router cannot enable MPLS due to entitlement restrictions, it means the organization lacks the rights to use that capability—even if access to the device itself is available. This distinction is separate from, for instance, the ability of a specific user to configure MPLS due to access control limitations.</t>
      </section>
      <section anchor="entitlement-deployment-models">
        <name>Entitlement Deployment Models</name>
        <t>Entitlements can be deployed and managed in different ways depending on the operational environment and vendor implementation. The following deployment models are commonly encountered:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Local Installation</strong>: The entitlement is installed directly on the network asset, which maintains knowledge of its entitlements and enforces capability restrictions locally. This is a common approach for devices that operate independently.</t>
          </li>
          <li>
            <t><strong>License Server</strong>: Entitlements reside in an external (license) server, which may be deployed on-premises or in the cloud. Network assets communicate with the license server to verify entitlement status and capability permissions. This model supports centralized management and dynamic entitlement allocation.</t>
          </li>
          <li>
            <t><strong>Commercial Agreement</strong>: In some deployments, entitlements exist purely as commercial agreements, and policy enforcement occurs outside the network asset. The network asset may operate without direct knowledge of the entitlement, relying on external systems for compliance tracking.</t>
          </li>
        </ul>
        <t>This model is designed to be exposed by both network elements and license services. It provides mechanisms for each system to express the information it knows while being clear about the information it does not have, primarily through the presence or absence of containers. A network element should contain certain entitlement information, a license service other information, and a telemetry monitoring system could gather data from both sources to provide a complete picture.</t>
        <section anchor="entitlement-provisioning">
          <name>Entitlement Provisioning</name>
          <t>This model is not intended for automatic discovery of entitlements or capabilities through the network elements themselves. Instead, it assumes that entitlements and their associations are either:</t>
          <ul spacing="normal">
            <li>
              <t>Provisioned in a license server or asset database;</t>
            </li>
            <li>
              <t>Installed on individual devices and reported through management interfaces; or</t>
            </li>
            <li>
              <t>Manually configured as part of an inventory process.</t>
            </li>
          </ul>
          <t>Future augmentations may explore capability discovery or telemetry-driven models, but they are out of scope of the current version.</t>
        </section>
      </section>
    </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?>

<ul spacing="normal">
        <li>
          <t>ToBeUpdated(TBU) Open Issue for the IVY WG, to include:</t>
        </li>
      </ul>
      <t>&lt;&lt;Update Glossary under  Network Inventory draft, <xref target="BaseInventory"/>. We need at least formal definitions of "capability" and "entitlement".&gt;&gt;</t>
      <ul spacing="normal">
        <li>
          <t>Capability: A discrete function, feature, or resource that a network element is technically capable of performing when properly entitled. Examples include MPLS routing, specific bandwidth throughput, or advanced QoS features.</t>
        </li>
        <li>
          <t>Entitlement: A vendor-issued authorization (typically a license) that grants permission to activate and use one or more capabilities on specific network elements, potentially subject to constraints such as time limits, usage quotas, or scope restrictions.</t>
        </li>
        <li>
          <t>Installed Entitlement: An entitlement that has been locally activated on a network element and is available for use by that element's capabilities.</t>
        </li>
        <li>
          <t>Capability Restriction: A constraint imposed by an entitlement that limits how a capability can be used (e.g., bandwidth cap, concurrent user limit, geographic restriction).</t>
        </li>
        <li>
          <t>Network Asset: A network element or a component within a network element. The model supports entitlements and capabilities at both levels. This term is used throughout the document when the concept applies equally to network elements and their components.</t>
        </li>
      </ul>
    </section>
    <section anchor="modeling-capabilities-and-entitlements">
      <name>Modeling Capabilities and Entitlements</name>
      <t>The model describes how to represent capabilities and the entitlements that enable them across inventoried network assets. Capabilities describe what an asset can do. Entitlements indicate whether those capabilities are allowed and under what conditions.</t>
      <figure anchor="fig-org">
        <name>Relationship Between Entitlements and Capabilities</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="256" viewBox="0 0 256 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <g class="text">
                <text x="100" y="36">Organizational</text>
                <text x="184" y="36">Level</text>
                <text x="128" y="52">┌─────────────────────────────┐</text>
                <text x="8" y="68">│</text>
                <text x="76" y="68">Entitlements</text>
                <text x="168" y="68">Inventory</text>
                <text x="248" y="68">│</text>
                <text x="8" y="84">│</text>
                <text x="80" y="84">(centralized)</text>
                <text x="248" y="84">│</text>
                <text x="128" y="100">└──────────┬──────────────────┘</text>
                <text x="96" y="116">│</text>
                <text x="140" y="116">attached</text>
                <text x="188" y="116">to</text>
                <text x="96" y="132">▼</text>
                <text x="128" y="148">┌─────────────────────────────┐</text>
                <text x="8" y="164">│</text>
                <text x="56" y="164">Network</text>
                <text x="124" y="164">Elements</text>
                <text x="248" y="164">│</text>
                <text x="8" y="180">│</text>
                <text x="124" y="180">┌──────────────────────┐</text>
                <text x="248" y="180">│</text>
                <text x="8" y="196">│</text>
                <text x="32" y="196">│</text>
                <text x="80" y="196">Installed</text>
                <text x="216" y="196">│</text>
                <text x="248" y="196">│</text>
                <text x="8" y="212">│</text>
                <text x="32" y="212">│</text>
                <text x="92" y="212">Entitlements</text>
                <text x="216" y="212">│</text>
                <text x="248" y="212">│</text>
                <text x="8" y="228">│</text>
                <text x="124" y="228">└─────┬────────────────┘</text>
                <text x="248" y="228">│</text>
                <text x="8" y="244">│</text>
                <text x="80" y="244">│</text>
                <text x="120" y="244">enables</text>
                <text x="248" y="244">│</text>
                <text x="8" y="260">│</text>
                <text x="80" y="260">▼</text>
                <text x="248" y="260">│</text>
                <text x="8" y="276">│</text>
                <text x="124" y="276">┌──────────────────────┐</text>
                <text x="248" y="276">│</text>
                <text x="8" y="292">│</text>
                <text x="32" y="292">│</text>
                <text x="92" y="292">Capabilities</text>
                <text x="216" y="292">│</text>
                <text x="248" y="292">│</text>
                <text x="8" y="308">│</text>
                <text x="32" y="308">│</text>
                <text x="56" y="308">-</text>
                <text x="96" y="308">allowed</text>
                <text x="216" y="308">│</text>
                <text x="248" y="308">│</text>
                <text x="8" y="324">│</text>
                <text x="32" y="324">│</text>
                <text x="56" y="324">-</text>
                <text x="92" y="324">in-use</text>
                <text x="216" y="324">│</text>
                <text x="248" y="324">│</text>
                <text x="8" y="340">│</text>
                <text x="32" y="340">│</text>
                <text x="56" y="340">-</text>
                <text x="116" y="340">restrictions</text>
                <text x="216" y="340">│</text>
                <text x="248" y="340">│</text>
                <text x="8" y="356">│</text>
                <text x="124" y="356">└──────────────────────┘</text>
                <text x="248" y="356">│</text>
                <text x="128" y="372">└─────────────────────────────┘</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
        Organizational Level
   ┌─────────────────────────────┐
   │  Entitlements Inventory     │
   │  (centralized)              │
   └──────────┬──────────────────┘
              │ attached to
              ▼
   ┌─────────────────────────────┐
   │  Network Elements           │
   │  ┌──────────────────────┐   │
   │  │ Installed            │   │
   │  │ Entitlements         │   │
   │  └─────┬────────────────┘   │
   │        │ enables            │
   │        ▼                    │
   │  ┌──────────────────────┐   │
   │  │ Capabilities         │   │
   │  │  - allowed           │   │
   │  │  - in-use            │   │
   │  │  - restrictions      │   │
   │  └──────────────────────┘   │
   └─────────────────────────────┘

]]></artwork>
        </artset>
      </figure>
      <t>The following subsections describe how the model progressively builds upon the base network inventory to incorporate capabilities, entitlements, and their relationships. The model uses identity-based classes in multiple parts to enable extensibility, allowing implementations to derive custom types that reference external definitions when needed.</t>
      <section anchor="foundational-model-networkelement-entitlements-capabilities-and-restrictions">
        <name>Foundational model: NetworkElement-Entitlements-Capabilities and Restrictions</name>
        <t>To represent the complex relationships between network elements, capabilities, and entitlements, a foundational Network Inventory model should be built through a series of extensions. The following diagrams illustrate the progressive complexity of the approach, starting with simple network inventory extensions and culminating in a comprehensive model incorporating capabilities, entitlements, and restrictions.</t>
        <section anchor="progressive-model-complexity">
          <name>Progressive Model Complexity</name>
          <t><xref target="fig-extBaseNetworkInventory"/> depicts the initial step, highlighting the base network inventory and the areas to be extended: hardware, software, and entitlements. These extensions are necessary to properly model the relationships.</t>
          <figure anchor="fig-extBaseNetworkInventory">
            <name>Base Network Inventory Entitlement extension</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="464" viewBox="0 0 464 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <g class="text">
                    <text x="240" y="36">┌─────────────────┐</text>
                    <text x="184" y="52">│Base</text>
                    <text x="240" y="52">Network</text>
                    <text x="312" y="52">│</text>
                    <text x="204" y="68">│Inventory</text>
                    <text x="312" y="68">│</text>
                    <text x="240" y="84">└─────────┬───────┘</text>
                    <text x="248" y="100">┌─────────────────────┼─────────────────────┐</text>
                    <text x="72" y="116">▼</text>
                    <text x="248" y="116">▼</text>
                    <text x="424" y="116">▼</text>
                    <text x="64" y="132">┌─────────────┐</text>
                    <text x="232" y="132">┌─────────────────┐</text>
                    <text x="400" y="132">┌─────────────┐</text>
                    <text x="8" y="148">│</text>
                    <text x="60" y="148">Hardware</text>
                    <text x="120" y="148">│</text>
                    <text x="160" y="148">│</text>
                    <text x="228" y="148">Software</text>
                    <text x="304" y="148">│</text>
                    <text x="392" y="148">│Entitlements</text>
                    <text x="456" y="148">│</text>
                    <text x="64" y="164">└─────────────┘</text>
                    <text x="232" y="164">└─────────────────┘</text>
                    <text x="400" y="164">└─────────────┘</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                    ┌─────────────────┐
                    │Base Network     │
                    │Inventory        │
                    └─────────┬───────┘
        ┌─────────────────────┼─────────────────────┐
        ▼                     ▼                     ▼
┌─────────────┐    ┌─────────────────┐    ┌─────────────┐
│  Hardware   │    │    Software     │    │Entitlements │
└─────────────┘    └─────────────────┘    └─────────────┘
]]></artwork>
            </artset>
          </figure>
          <t><xref target="fig-ascii-art_baseInventory"/> illustrates the initial relationship between network elements and entitlements, which is two-way: entitlements <bcp14>SHOULD</bcp14> be attached to NEs, and NEs <bcp14>SHOULD</bcp14> have entitlements installed.</t>
          <figure anchor="fig-ascii-art_baseInventory">
            <name>Relationship between entitlements and Base Inventory</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="464" viewBox="0 0 464 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <g class="text">
                    <text x="248" y="36">┌─────────────────────────┐</text>
                    <text x="160" y="52">│Base</text>
                    <text x="216" y="52">Network</text>
                    <text x="288" y="52">Inventory</text>
                    <text x="352" y="52">│</text>
                    <text x="248" y="68">└─────────┬───────────────┘</text>
                    <text x="224" y="84">┌─────────────────────┼─────────────────────┐</text>
                    <text x="48" y="100">▼</text>
                    <text x="224" y="100">▼</text>
                    <text x="400" y="100">▼</text>
                    <text x="64" y="116">┌────┴────────┐</text>
                    <text x="232" y="116">┌───────┴─────────┐</text>
                    <text x="400" y="116">┌──────┴──────┐</text>
                    <text x="8" y="132">│</text>
                    <text x="60" y="132">Hardware</text>
                    <text x="120" y="132">│</text>
                    <text x="160" y="132">│</text>
                    <text x="228" y="132">Software</text>
                    <text x="304" y="132">│</text>
                    <text x="392" y="132">│Entitlements</text>
                    <text x="456" y="132">│</text>
                    <text x="64" y="148">└──────┬──────┘</text>
                    <text x="232" y="148">└───────┬─────────┘</text>
                    <text x="400" y="148">└───┬──┬──────┘</text>
                    <text x="64" y="164">│</text>
                    <text x="224" y="164">│</text>
                    <text x="376" y="164">│</text>
                    <text x="400" y="164">│</text>
                    <text x="64" y="180">│</text>
                    <text x="300" y="180">└───────&lt;──&gt;───────┘</text>
                    <text x="400" y="180">│</text>
                    <text x="232" y="196">└───────────────────&lt;──&gt;──────────────────┘</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                 ┌─────────────────────────┐
                 │Base Network Inventory   │
                 └─────────┬───────────────┘
     ┌─────────────────────┼─────────────────────┐
     ▼                     ▼                     ▼  
┌────┴────────┐    ┌───────┴─────────┐    ┌──────┴──────┐
│  Hardware   │    │    Software     │    │Entitlements │
└──────┬──────┘    └───────┬─────────┘    └───┬──┬──────┘
       │                   │                  │  │       
       │                   └───────<──>───────┘  │       
       └───────────────────<──>──────────────────┘       
]]></artwork>
            </artset>
          </figure>
          <t><xref target="fig-capabilities_baseinventory"/> depicts NE support capabilities by means of entitlements that authorize their use.</t>
          <figure anchor="fig-capabilities_baseinventory">
            <name>Capabilities integration with the Base Inventory</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="456" viewBox="0 0 456 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <g class="text">
                    <text x="232" y="36">┌─────────────────────────┐</text>
                    <text x="144" y="52">│Base</text>
                    <text x="200" y="52">Network</text>
                    <text x="272" y="52">Inventory</text>
                    <text x="336" y="52">│</text>
                    <text x="232" y="68">└──────────┬──────────────┘</text>
                    <text x="216" y="84">┌────────────────────┼────────────────────┐</text>
                    <text x="48" y="100">▼</text>
                    <text x="216" y="100">▼</text>
                    <text x="384" y="100">▼</text>
                    <text x="60" y="116">┌────┴───────┐</text>
                    <text x="216" y="116">┌───────┴───────┐</text>
                    <text x="380" y="116">┌──────┴─────┐</text>
                    <text x="8" y="132">│</text>
                    <text x="60" y="132">Hardware</text>
                    <text x="112" y="132">│</text>
                    <text x="152" y="132">│</text>
                    <text x="220" y="132">Entitlements</text>
                    <text x="280" y="132">│</text>
                    <text x="328" y="132">│</text>
                    <text x="388" y="132">Software</text>
                    <text x="432" y="132">│</text>
                    <text x="60" y="148">└────┬───────┘</text>
                    <text x="216" y="148">└─────┬─────────┘</text>
                    <text x="380" y="148">└─────┬──────┘</text>
                    <text x="48" y="164">│</text>
                    <text x="200" y="164">│</text>
                    <text x="376" y="164">│</text>
                    <text x="48" y="180">│</text>
                    <text x="228" y="180">│enables</text>
                    <text x="376" y="180">│</text>
                    <text x="80" y="196">│supports</text>
                    <text x="212" y="196">┌──────V─────────┐</text>
                    <text x="344" y="196">supports│</text>
                    <text x="96" y="212">└──────────&gt;│</text>
                    <text x="212" y="212">Capabilities</text>
                    <text x="328" y="212">│&lt;──────────┘</text>
                    <text x="212" y="228">└────────────────┘</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                 ┌─────────────────────────┐
                 │Base Network Inventory   │
                 └──────────┬──────────────┘
       ┌────────────────────┼────────────────────┐
       ▼                    ▼                    ▼     
  ┌────┴───────┐    ┌───────┴───────┐     ┌──────┴─────┐
  │  Hardware  │    │  Entitlements │     │   Software │
  └────┬───────┘    └─────┬─────────┘     └─────┬──────┘
       │                  │                     │      
       │                  │enables              │      
       │supports   ┌──────V─────────┐   supports│      
       └──────────>│  Capabilities  │<──────────┘      
                   └────────────────┘                     
]]></artwork>
            </artset>
          </figure>
          <t>Finally, NE support capabilities thanks to entitlements that entitle them of their use under certain constraints as shown in <xref target="fig-capabilities_restrictions"/>.</t>
          <figure anchor="fig-capabilities_restrictions">
            <name>Complete model with restrictions</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="568" viewBox="0 0 568 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <g class="text">
                    <text x="236" y="36">┌────────────────────────────┐</text>
                    <text x="120" y="52">│</text>
                    <text x="164" y="52">Base</text>
                    <text x="216" y="52">Network</text>
                    <text x="288" y="52">Inventory</text>
                    <text x="352" y="52">│</text>
                    <text x="236" y="68">└────────────┬───────────────┘</text>
                    <text x="224" y="84">│</text>
                    <text x="232" y="100">┌───────────────────┼─────────────────────┐</text>
                    <text x="64" y="116">▼</text>
                    <text x="224" y="116">▼</text>
                    <text x="400" y="116">▼</text>
                    <text x="60" y="132">┌──────┴─────┐</text>
                    <text x="224" y="132">┌───────┴───────┐</text>
                    <text x="396" y="132">┌──────┴─────┐</text>
                    <text x="8" y="148">│</text>
                    <text x="60" y="148">Hardware</text>
                    <text x="112" y="148">│</text>
                    <text x="160" y="148">│</text>
                    <text x="228" y="148">Entitlements</text>
                    <text x="288" y="148">│</text>
                    <text x="344" y="148">│</text>
                    <text x="404" y="148">Software</text>
                    <text x="448" y="148">│</text>
                    <text x="60" y="164">└──────┬─────┘</text>
                    <text x="224" y="164">└───────┬───────┘</text>
                    <text x="396" y="164">└──────┬─────┘</text>
                    <text x="64" y="180">│</text>
                    <text x="224" y="180">│</text>
                    <text x="400" y="180">│</text>
                    <text x="64" y="196">│</text>
                    <text x="252" y="196">│enables</text>
                    <text x="400" y="196">│</text>
                    <text x="96" y="212">│supports</text>
                    <text x="236" y="212">┌──────V─────────┐</text>
                    <text x="368" y="212">supports│</text>
                    <text x="116" y="228">└───────────&gt;│</text>
                    <text x="236" y="228">Capabilities</text>
                    <text x="352" y="228">│&lt;──────────┘</text>
                    <text x="236" y="244">└──────┬─────────┘</text>
                    <text x="224" y="260">│</text>
                    <text x="268" y="276">│constrained</text>
                    <text x="332" y="276">by</text>
                    <text x="236" y="292">┌──────V─────────┐</text>
                    <text x="168" y="308">│</text>
                    <text x="236" y="308">Restrictions</text>
                    <text x="304" y="308">│</text>
                    <text x="236" y="324">└────────────────┘</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
              ┌────────────────────────────┐            
              │   Base Network Inventory   │            
              └────────────┬───────────────┘            
                           │                            
       ┌───────────────────┼─────────────────────┐      
       ▼                   ▼                     ▼  
┌──────┴─────┐     ┌───────┴───────┐      ┌──────┴─────┐
│  Hardware  │     │  Entitlements │      │   Software │
└──────┬─────┘     └───────┬───────┘      └──────┬─────┘
       │                   │                     │      
       │                   │enables              │      
       │supports    ┌──────V─────────┐   supports│      
       └───────────>│  Capabilities  │<──────────┘      
                    └──────┬─────────┘                  
                           │              
                           │constrained by                            
                    ┌──────V─────────┐                  
                    │  Restrictions  │                  
                    └────────────────┘                  
]]></artwork>
            </artset>
          </figure>
        </section>
      </section>
      <section anchor="capabilities">
        <name>Capabilities</name>
        <t>Capabilities are modeled by augmenting "network-element" in the "ietf-network-inventory" module in <xref target="BaseInventory"/> according to the following tree:</t>
        <artwork><![CDATA[
 +--ro capabilities!
    +--ro capability-class* [capability-class]
       +--ro capability-class    identityref
       +--ro capability* [capability-id]
          +--ro capability-id                      string
          +--ro extended-capability-description?   string
          +--ro entitlement-state!
          |  +--ro allowed?   boolean
          |  +--ro in-use?    boolean
          +--ro supporting-entitlements!
          |  +--ro supporting-entitlement* [entitlement-id]
          |     +--ro entitlement-id    -> ../../../../../../installed-entitlements/entitlement/entitlement-id
          +--ro capability-restrictions!
             +--ro capability-restriction* [restriction-id]
                +--ro restriction-id    string
                +--ro description?      string
                +--ro resource-name?    string
                +--ro units?            string
                +--ro max-value?        int32
                +--ro current-value?    int32
]]></artwork>
        <t>For any given network asset, the capabilities list <bcp14>MAY</bcp14> include all potential capabilities advertised by the vendor, and <bcp14>MUST</bcp14> include those for which the network operator holds a valid entitlement—whether active or not.</t>
        <t>This document does not define a complete theory of capabilities or their internal relationships; such work may be addressed elsewhere. Instead, the model provides a flexible framework through the use of identity-based capability classes:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Basic capability class</strong>: The module defines <tt>basic-capability-description</tt> as a simple capability  class using only identifiers and descriptions. This supports implementations that present capabilities as straightforward lists.</t>
          </li>
          <li>
            <t><strong>Extended capability classes</strong>: For structured capability definitions, implementations derive new identities from <tt>capability-class</tt>. These reference external YANG modules where capabilities have formal structure and semantics. (TBU - See Section X for extension examples.)</t>
          </li>
        </ul>
        <t>This separation ensures that capability definitions can evolve independently of the entitlement inventory model, and that implementations can adopt capability models appropriate to their domain without modifications to this base module.</t>
        <t>The granularity at which capabilities are defined is at the discretion of the vendor. A vendor <bcp14>MAY</bcp14> choose to advertise capabilities at a high level of abstraction, such as "Advanced Services", and consumers of this information should refer to vendor documentation to understand what specific functions are included. Alternatively, an implementation <bcp14>MAY</bcp14> enumerate capabilities at a finer granularity, listing individual protocols or features such as MPLS, BGP, or QoS. The model accommodates both approaches.</t>
        <t>The capabilities of an inventoried network asset may be restricted based on the availability of proper entitlements. An entitlement manager should be interested in the capabilities available to be used on the network assets, and the capabilities that are currently available. The model includes this information by means of the "supporting entitlements" list, which references installed entitlements and includes potential restrictions related to the status of the entitlement. This allows organizations to monitor entitlement usage and avoid misconfigurations or exceeding permitted capability limits.</t>
        <section anchor="extending-capability-classes">
          <name>Extending Capability Classes</name>
          <t>The <tt>capability-class</tt> identity provides an extension point for integrating external capability models. This module does not define domain-specific capability classes. Instead, extensions derive new capability classes that reference separate models where capabilities are formally defined.</t>
          <t>The extension pattern involves two modules:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Capability definition module</strong>: An independent module defining capability concepts with its own structure (lists, containers, attributes). This module has no dependency on the entitlement inventory.</t>
            </li>
            <li>
              <t><strong>Integration module</strong>: An extension module that derives a new <tt>capability-class</tt> identity and augments the entitlement inventory to reference the capability definitions from the first module.</t>
            </li>
          </ol>
          <t>This pattern ensures that:</t>
          <ul spacing="normal">
            <li>
              <t>Capability models evolve independently of entitlement tracking.</t>
            </li>
            <li>
              <t>Multiple capability domains can coexist (e.g., routing capabilities, security capabilities, QoS capabilities) each with their own defining module.</t>
            </li>
            <li>
              <t>The entitlement inventory remains a thin integration layer rather than a repository of capability definitions.</t>
            </li>
          </ul>
          <t>The following example module defines capability concepts for a specific domain:</t>
          <artwork><![CDATA[
module example-capability-framework {
  yang-version 1.1;
  namespace "urn:example:capability-framework";
  prefix excap;

  organization
    "Example Organization";
  description
    "Example module defining a list of capabilities.";

  revision 2025-12-05 {
    description
      "Initial version.";
  }

  container capabilities {
    description
      "Container for capability definitions.";

    list capability {
      key "capability-id";
      description
        "List of capability definitions.";

      leaf capability-id {
        type string;
        description
          "Unique identifier for the capability.";
      }

      leaf description {
        type string;
        description
          "Human-readable description of the capability.";
      }
    }
  }
}
]]></artwork>
          <t>The following extension module extends the <tt>capability-class</tt> identity and augments the entitlement inventory to reference the capability definitions from the module above:</t>
          <artwork><![CDATA[
module example-capability-extension {
  yang-version 1.1;
  namespace "urn:example:capability-extension";
  prefix excapext;

  import ietf-entitlement-inventory {
    prefix ei;
  }
  import ietf-network-inventory {
    prefix inv;
  }
  import example-capability-framework {
    prefix excap;
  }

  organization
    "Example Organization";
  description
    "Example module that extends capability-class and adds
     a reference to capability definitions in another module.";

  revision 2025-12-05 {
    description
      "Initial version.";
  }

  identity example-capability-class {
    base ei:capability-class;
    description
      "Capability class that references the example
       capability framework.";
  }

  augment "/inv:network-inventory/inv:network-elements"
        + "/inv:network-element/ei:capabilities"
        + "/ei:capability-class/ei:capability" {
    when "derived-from-or-self(../ei:capability-class,"
       + "'excapext:example-capability-class')";
    description
      "Adds a reference to capability definitions.";

    leaf capability-ref {
      type leafref {
        path "/excap:capabilities/excap:capability"
           + "/excap:capability-id";
      }
      description
        "Reference to a capability definition in the
         example-capability-framework module.";
    }
  }
}
]]></artwork>
          <t>This pattern allows capability definitions to evolve independently while maintaining a clean integration with the entitlement inventory through the capability-class identity mechanism.</t>
        </section>
      </section>
      <section anchor="entitlements">
        <name>Entitlements</name>
        <t>The entitlement modeling augments "network-inventory" in the ietf-network-inventory module in <xref target="BaseInventory"/> with a top-level entitlements container according to the following tree:</t>
        <artwork><![CDATA[
 +--ro entitlements!
    +--ro entitlement* [entitlement-id]
       +--ro entitlement-id            string
       +--ro product-id?               string
       +--ro sku?                      string
       +--ro vendor?                   string
       +--ro part-number?              string
       +--ro state?                    entitlement-state-t
       +--ro renewal-profile
       |  +--ro activation-date?   yang:date-and-time
       |  +--ro start-date?        yang:date-and-time
       |  +--ro expiration-date?   yang:date-and-time
       +--ro restrictions!
       |  +--ro restriction* [restriction-id]
       |     +--ro restriction-id    string
       |     +--ro description?      string
       |     +--ro resource-name?    string
       |     +--ro units?            string
       |     +--ro max-value?        int32
       |     +--ro current-value?    int32
       +--ro parent-entitlement-uid?   -> ../../entitlement/entitlement-id
       +--ro entitlement-attachment
          +--ro universal-access?   boolean
          +--ro holders
          |  +--ro organizations_names
          |  |  +--ro organizations*   string
          |  +--ro users_names
          |     +--ro users*   string
          +--ro assets
             +--ro elements
             |  +--ro network-elements*   -> /inv:network-inventory/network-elements/network-element/ne-id
             +--ro components
                +--ro component* [network-element component-id]
                   +--ro network-element    -> /inv:network-inventory/network-elements/network-element/ne-id
                   +--ro component-id       -> /inv:network-inventory/network-elements/network-element[inv:ne-id=current()/../network-element]/components/component/component-id
]]></artwork>
        <t><xref target="fig-ModelRelationship"/> depicts the relationship between the Entitlement Inventory model and other models. The Entitlement Inventory model enhances the model defined in the base network inventory model with entitlement-specific attributes and centralized entitlement management capabilities.</t>
        <figure anchor="fig-ModelRelationship">
          <name>Relationship of Entitlement Inventory Model to Other Inventory Models</name>
          <artwork><![CDATA[
   +----------------------+
   |                      |
   |Base Network Inventory|
   |                      |
   +----------+-----------+
              ^
              |
   +----------+-----------+
   |                      |
   | Entitlement Inventory|
   |  e.g., licenses,     |
   |  capabilities,       |
   |  restrictions        |
   +----------------------+
]]></artwork>
        </figure>
        <t>Entitlements <bcp14>MUST</bcp14> be listed at the top level, directly under the <tt>network-inventory</tt> container. This is required because organizations may own entitlements that are not yet assigned to any network asset. Such entitlements exist in a pending state, available for future assignment or installation when the organization decides to allocate them to specific assets.</t>
        <t>Entitlements may be listed without explicitly identifying the assets (network elements or components) they apply to. Entitlements are linked to network assets in multiple ways: (1) When entitlements are created for specific assets (i.e., they should only be installed on those), then those assets are specified under the entitlement's attachment section. (2) When an entitlement is installed on a network asset, it appears in the asset's installed-entitlements list. (3) When an installed entitlement enables capabilities, the asset's capabilities will reference the installed entitlement via the supporting-entitlements list.</t>
        <t>The base network inventory model includes both network elements and components within them. A network element is an abstraction that typically represents a complete device such as a router or switch. For single-chassis devices, entitlements are typically associated with the network element itself rather than with individual chassis components. However, certain deployment scenarios involve multi-chassis systems, such as stacked switches or optical network elements—where multiple physical units operate as a single logical network element. In these cases, each component may have its own commercial identity (such as a serial number) while the collection behaves as one network element.</t>
        <t>Entitlements are typically assigned based on commercial identifiers, often targeting serial numbers. The model supports linking entitlements to both network elements and individual components. However, component-level entitlement tracking is <bcp14>RECOMMENDED</bcp14> only when necessary—specifically when each component has its own set of capability limitations that must be managed independently. Examples include:</t>
        <ul spacing="normal">
          <li>
            <t>Individual switches in a stack, where each unit has separate entitlements;</t>
          </li>
          <li>
            <t>Individual chassis in a multi-chassis network element, such as optical equipment; or</t>
          </li>
          <li>
            <t>Pay-as-you-grow routers where line cards have independent entitlement requirements.</t>
          </li>
        </ul>
        <t>In the YANG model, both network elements and components are supported by providing augmentations to each.</t>
        <t>Entitlements and network assets are linked in the model in multiple ways. Entitlements at the network-inventory level should be attached to network assets through their attachment mechanism, representing organizational entitlements. Network assets have their own installed-entitlements that may be derived from the centralized entitlements or assigned directly. The capabilities of network assets reference these installed entitlements through their supporting-entitlements lists. The former addresses the case of a centralized license server or inventory system, while the latter represents entitlements that are actively entitling the asset's capabilities. An installed entitlement that is not referenced by any capability means that it is active on the asset but not currently in use.</t>
        <t>Entitlements are managed both centrally at the network-inventory level and at the asset level through installed-entitlements. Network assets reference their installed entitlements through their capabilities' supporting-entitlements lists. For instance, a license server or inventory system should list an entitlement at the top level, which then gets installed on specific network assets where the capabilities reference the active entitlement. Each installed entitlement references its centralized entitlement directly via the entitlement-id leafref. For hierarchical or pooled entitlements (e.g., a base license with add-on upgrades), the "parent-entitlement-uid" field in the centralized entitlement catalog links child entitlements to their parent. Proper identification of entitlements is imperative to ensure consistency across systems, enabling monitoring systems to recognize when multiple locations reference related entitlements.</t>
        <section anchor="reverse-mapping-from-entitlements-to-capabilities">
          <name>Reverse Mapping from Entitlements to Capabilities</name>
          <t>While the model includes links from capabilities to supporting entitlements, some inventory operators may need to evaluate entitlements independently and identify the capabilities they enable.</t>
          <t>To support this, implementers may use the "product-id" or "capability-class" metadata along with external references or catalogs. Implementations requiring reverse mapping (identifying capabilities enabled by a specific entitlement) may leverage vendor-specific augmentations or external entitlement catalogs. Standardization of such reverse mappings is outside the scope of this document.</t>
        </section>
      </section>
      <section anchor="entitlement-attachment">
        <name>Entitlement Attachment</name>
        <t>The "entitlement" container holds a container called "entitlement-attachment" which relates how the entitlement is operationally linked to holders or network assets. Note that there is a difference between an entitlement being attached to a network asset and an entitlement being installed on the asset. In the former, the license was explicitly associated with one or more assets. Some licenses actually can be open but have a limited number of installations. Other licenses should be openly constrained to a geographic location. We are not dealing with these complex cases now, but the container can be expanded for this in the future.</t>
        <t>The model accommodates listing entitlements acquired by the organization but not yet applied or utilized by any actor/asset at the network-inventory level. For these pending entitlements, they can be managed centrally without requiring individual network assets to be aware of their existence.</t>
        <t>Some entitlements are inherently associated with a holder, such as organization or a user. For example, a software license may be directly attached to a user. Also, the use of a network device may come with a basic license provided solely to an organization. Some entitlements could be assigned to a more abstract description of holders, such as people under a jurisdiction or a geographical area. The model contains basic information about this, but it can be extended in the future to be more descriptive.</t>
        <t>While attachment is optional, the model should be capable of expressing attachment in various scenarios. The model can be expanded to list to which network assets an entitlement is aimed for, when this link is more vague, such as a site license (e.g., network assets located in a specific site), or more open licenses (e.g., free software for all users subscribed to a streaming platform).</t>
        <t>The current model does not provide information on whether an entitlement can be reassigned to other network assets. Such scenarios fall under the "what if" category, which is not covered by this model.</t>
      </section>
      <section anchor="installed-entitlements">
        <name>Installed Entitlements</name>
        <t>Since capabilities are optional in network assets, the model also provides an augmentation to track entitlements that are installed directly on network assets. This augmentation of "network-element" and "component" in the "ietf-network-inventory" module provides local entitlement storage according to the following tree:</t>
        <artwork><![CDATA[
 +--ro installed-entitlements!
    +--ro entitlement* [entitlement-id]
       +--ro entitlement-id    -> /inv:network-inventory/ei:entitlements/entitlement/entitlement-id
       +--ro in-use?           boolean
]]></artwork>
        <t>The installed entitlements represent references to entitlements that are currently active and entitling the network asset. The "entitlement-id" field provides a direct reference to the centralized entitlement at the network-inventory level.</t>
        <t>This structure allows network assets to track which entitlements are actively granting them rights, while maintaining the ability to trace relationships to organization-wide entitlement policies.</t>
        <t>When entitlements are installed at the component level (e.g., line cards), implementations <bcp14>MAY</bcp14> also list them at the parent network-element level to provide a consolidated view of all entitlements active on the device. Management systems should recognize when an entitlement-id appears at both levels and treat them as the same license instance to avoid double-counting. This point requires further exploration in future instances of this document.</t>
      </section>
      <section anchor="implementation-considerations">
        <name>Implementation Considerations</name>
        <t>The model is designed to support partial implementations. Not all systems need to implement every container or feature. The use of presence containers throughout the model allows implementations to signal which parts of the model they support. An implementation that does not populate a presence container indicates that it cannot report that information.</t>
        <t>The following progression describes how implementations can adopt the model incrementally, from basic entitlement tracking to full capability and restriction reporting:</t>
        <section anchor="level-1-centralized-entitlement-inventory">
          <name>Level 1: Centralized Entitlement Inventory</name>
          <t>The minimal implementation populates the top-level <tt>entitlements</tt> container under <tt>network-inventory</tt>. This provides a centralized catalog of all entitlements owned or managed by the organization, including their identifiers, vendors, states, and validity periods.</t>
          <t>At this level, the system answers: What entitlements does the organization have?</t>
        </section>
        <section anchor="level-2-installed-entitlements-on-assets">
          <name>Level 2: Installed Entitlements on Assets</name>
          <t>Building on Level 1, implementations can populate the <tt>installed-entitlements</tt> container on network elements and/or components. This tracks which entitlements are currently active and entitling each network asset, by referencing the centralized entitlement catalog.</t>
          <t>At this level, the system additionally answers: Which entitlements are actively entitling which assets?</t>
        </section>
        <section anchor="level-3-capabilities-reporting">
          <name>Level 3: Capabilities Reporting</name>
          <t>Implementations that can report device capabilities populate the <tt>capabilities</tt> container on network elements and/or components. This lists what functions each asset can perform, organized by capability class.</t>
          <t>At this level, the system additionally answers: What can each asset do?</t>
        </section>
        <section anchor="level-4-capability-entitlement-linkage">
          <name>Level 4: Capability-Entitlement Linkage</name>
          <t>Advanced implementations populate the <tt>supporting-entitlements</tt> container within each capability. This links capabilities to the installed entitlements that enable them, along with the <tt>entitlement-state</tt> container indicating whether each capability is allowed and in use.</t>
          <t>When a capability lists multiple supporting entitlements, the <tt>entitlement-state/allowed</tt> field <bcp14>MUST</bcp14> reflect the combined effect of all required entitlements. If any required entitlement is missing, expired, or revoked, <tt>allowed</tt> should be false. The <tt>in-use</tt> field indicates whether the capability is currently operational.</t>
          <t>At this level, the system additionally answers: Which entitlements enable which capabilities? What is allowed and what is in use?</t>
        </section>
        <section anchor="level-5-restrictions-reporting">
          <name>Level 5: Restrictions Reporting</name>
          <t>Full implementations populate restriction information at two levels:</t>
          <ul spacing="normal">
            <li>
              <t>The <tt>restrictions</tt> container under each entitlement for global restrictions (e.g., total allowed installations, aggregate usage limits)</t>
            </li>
            <li>
              <t>The <tt>capability-restrictions</tt> container within each capability for capability-specific limits (e.g., maximum throughput, connection limits)</t>
            </li>
          </ul>
          <t>At this level, the system additionally answers: What constraints apply to entitlements and capabilities? What are the current usage levels?</t>
          <t>Implementations <bcp14>SHOULD</bcp14> document which levels they support and any deviations from this progression.</t>
        </section>
      </section>
      <section anchor="model-definition">
        <name>Model Definition</name>
        <artwork><![CDATA[
module ietf-entitlement-inventory {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-entitlement-inventory";
  prefix ei;

  import ietf-yang-types {
    prefix yang;
  }
  import ietf-network-inventory {
    prefix inv;
  }

  organization
    "IETF IVY Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/ivy/>
     WG List:  <mailto:inventory-yang@ietf.org>

     Author:  Marisol Palmero

     Author:  Camilo Cardona

     Author:  Diego Lopez

     Author:  Italo Busi
    ";
  description
    "A YANG module for Entitlement Inventory, as per
     draft-ietf-ivy-entitlement-inventory-01.

     Copyright (c) 2025 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.
    ";

  revision 2025-10-20 {
    description
      "First full draft version for
       draft-ietf-ivy-entitlement-inventory";
    reference
      "draft-ietf-ivy-entitlement-inventory-01";
  }

  identity capability-class {
    description
      "Base identity for capability classes.";
  }

  identity basic-capability-description {
    base capability-class;
    description
      "Basic capability class for general capability descriptions.";
  }

  typedef entitlement-state-t {
    type enumeration {
      enum active {
        description
          "Entitlement is active.";
      }
      enum expired {
        description
          "Entitlement is expired.";
      }
      enum pending {
        description
          "Entitlement is pending activation.";
      }
      enum revoked {
        description
          "Entitlement is revoked.";
      }
    }
    description
      "State of the entitlement.";
  }

  grouping restriction-fields {
    description
      "Common fields for describing restrictions or limits.
       Used both for capability-level restrictions and
       entitlement-level global restrictions.";
    leaf description {
      type string;
      description
        "Human-readable description of the restriction.";
    }
    leaf resource-name {
      type string;
      description
        "Optional name of the physical or network resource
         being restricted (e.g., 'bandwidth', 'throughput',
         'storage', 'memory').";
    }
    leaf units {
      type string;
      description
        "Units for the restriction values (e.g., 'Mbps',
         'connections', 'tunnels').";
    }
    leaf max-value {
      type int32;
      description
        "Maximum permitted value for this restriction.";
    }
    leaf current-value {
      type int32;
      description
        "Current usage or consumption of this restricted
         resource at query time.";
    }
  }

  grouping installed-entitlements-group {
    description
      "Grouping for installed entitlements that can be applied to
       network elements or components (generally called asset
       over this document).";
    container installed-entitlements {
      presence
        "The presence of this container means the information system
         that exposes this model knows of the installed entitlements
         of the asset that it populates.
         An empty list of entitlements would then mean
         that no entitlement is installed in this asset.";
      config false;
      description
        "Entitlements currently active and entitling this asset.";
      list entitlement {
        key "entitlement-id";
        description
          "List of entitlements actively entitling this asset.
           Each entitlement references a global listed entitlement.";
        leaf entitlement-id {
          type leafref {
            path "/inv:network-inventory/ei:entitlements"
               + "/ei:entitlement/ei:entitlement-id";
          }
          description
            "Reference to centralized entitlement.";
        }
        leaf in-use {
          type boolean;
          description
            "Informs whether the entitlement is actively used,
             besides being installed. If existing, and if the
             capabilities list exist and the information system
             supports setting their entitlement-state, this
             information MUST be consistent with it. Meaning, this
             should be in-use if any capability it supports is
             in-use, or false otherwise.  The no presence of this
             leaf means that the information system cannot express
             this information";
        }
      }
    }
  }

  grouping capabilities-group {
    description
      "Grouping for capabilities that can be applied to assets.
       Capabilities represent what the
       asset can do, potentially restricted by entitlements.";
    container capabilities {
      presence
        "The presence of this container means the information system
         that exposes this model is aware of and can report the
         capabilities of this asset
         (i.e. network element or component).
         An empty list of capability classes would mean that the
         element has no capabilities configured or available.";
      config false;
      description
        "Container for capabilities of this asset.";
      list capability-class {
        key "capability-class";
        description
          "List of capability classes supported by this asset. Each
           class groups related capabilities.";
        leaf capability-class {
          type identityref {
            base capability-class;
          }
          description
            "Identifier for the capability class using an identity
             reference.";
        }
        list capability {
          key "capability-id";
          description
            "Individual capability within this class. Represents a
             specific function or feature that the element may
             perform.";
          leaf capability-id {
            type string;
            description
              "Unique identifier for this capability.";
          }
          leaf extended-capability-description {
            type string;
            description
              "Extended capability description.";
          }
          container entitlement-state {
            presence
              "The presence of this container indicates the system
               can report whether this capability is allowed and/or
               in use based on entitlement status.";
            description
              "Reports whether this capability is permitted by
               entitlements and whether it is currently in active
               use.";
            leaf allowed {
              type boolean;
              description
                "Whether the capability is allowed by entitlements.";
            }
            leaf in-use {
              type boolean;
              description
                "Whether the capability is currently in use.";
            }
          }
          container supporting-entitlements {
            presence
              "The presence of this container indicates the system
               can report the entitlement(s) supporting
               the use of this capability by the asset to its
               current allowed state. this container
               should not exist if the system cannot report this.
               An empty list of supporting-entitlement means
               the capability requires no special
               entitlement to be provided.";
            description
              "List of installed entitlements that
               enable or support this capability.";
            list supporting-entitlement {
              key "entitlement-id";
              description
                "List of installed entitlements
                 that enable or support this capability. The
                 capability may require one or more
                 entitlements to be allowed and in use.";
              leaf entitlement-id {
                type leafref {
                  path "../../../../../../installed-entitlements"
                     + "/entitlement/entitlement-id";
                }
                description
                  "Reference to an installed entitlement
                   supporting this capability.";
              }
            }
          }
          container capability-restrictions {
            presence
              "The presence of this container indicates that the
               system can report the current capability restrictions.
               If present, an empty list of
               capability-restriction means the capability
               has no restriction.";
            description
              "Restrictions or limits imposed on this capability by
               entitlements.";
            list capability-restriction {
              key "restriction-id";
              description
                "Restrictions or limits imposed on this capability by
                 entitlements.";
              leaf restriction-id {
                type string;
                description
                  "Unique identifier for this
                   capability restriction.";
              }
              uses restriction-fields;
            }
          }
        }
      }
    }
  }

  augment "/inv:network-inventory/inv:network-elements"
        + "/inv:network-element" {
    description
      "Augments network elements with installed entitlements tracking
       which entitlements are currently active and entitling the
       device.";
    uses installed-entitlements-group;
  }

  augment "/inv:network-inventory/inv:network-elements"
        + "/inv:network-element/inv:components/inv:component" {
    description
      "Augments network element components with installed
       entitlements for component-level tracking.";
    uses installed-entitlements-group;
  }

  augment "/inv:network-inventory/inv:network-elements"
        + "/inv:network-element" {
    description
      "Augments network elements with capabilities information,
       describing what functions the element can perform and their
       entitlement status.";
    uses capabilities-group;
  }

  augment "/inv:network-inventory/inv:network-elements"
        + "/inv:network-element/inv:components/inv:component" {
    description
      "Augments network element components with capabilities for
       component-level feature tracking and entitlement
       restrictions.";
    uses capabilities-group;
  }

  augment "/inv:network-inventory" {
    description
      "Augments the network inventory with a centralized entitlements
       catalog.  This provides organization-wide visibility of all
       acquired entitlements, their holders, validity periods, and
       asset associations.";
    container entitlements {
      presence
        "The presence of this container indicates the system
         maintains and can report the organizational entitlement
         catalog. An empty list means the organization has no
         entitlements defined.";
      config false;
      description
        "Top-level container for organizational entitlements.";
      list entitlement {
        key "entitlement-id";
        description
          "List of entitlements owned or managed by the organization.
           Each entitlement represents a license, right, or
           permission to use specific capabilities, potentially with
           restrictions on scope, time, or usage.";
        leaf entitlement-id {
          type string;
          description
            "Unique entitlement identifier.";
        }
        leaf product-id {
          type string;
          description
            "Product identifier for this entitlement.";
        }
        leaf sku {
          type string;
          description
            "Stock Keeping Unit - vendor's catalog/ordering number
             for this entitlement. Used for procurement and asset
             management integration.";
        }
        leaf vendor {
          type string;
          description
            "Vendor or issuer of this entitlement. Identifies the
             license provider.";
        }
        leaf part-number {
          type string;
          description
            "Manufacturer's part number. May differ from SKU in
             distribution channels.";
        }
        leaf state {
          type entitlement-state-t;
          description
            "Current state of the entitlement.";
        }
        container renewal-profile {
          description
            "Renewal and validity information for the entitlement.";
          leaf activation-date {
            type yang:date-and-time;
            description
              "Date when entitlement was activated.";
          }
          leaf start-date {
            type yang:date-and-time;
            description
              "Start date of entitlement validity.";
          }
          leaf expiration-date {
            type yang:date-and-time;
            description
              "Expiration date of the entitlement.";
          }
        }
        container restrictions {
          presence
            "The presence of this container means the
             system can provide information of global restrictions
             for this entitlement. An empty list will then
             mean that the entitlement has no global restriction.";
          description
            "Global restrictions imposed by this entitlement.";
          list restriction {
            key "restriction-id";
            description
              "List of restrictions that apply globally to this
               entitlement across all assets and holders. These may
               include usage limits, quotas, or other constraints on
               how the entitlement can be utilized.";
            leaf restriction-id {
              type string;
              description
                "Unique restriction identifier.";
            }
            uses restriction-fields;
          }
        }
        leaf parent-entitlement-uid {
          type leafref {
            path "../../entitlement/entitlement-id";
          }
          must '. != ../entitlement-id' {
            error-message
              "An entitlement cannot reference itself as its
               parent.";
          }
          description
            "Reference to parent entitlement if this is derived.";
        }
        container entitlement-attachment {
          description
            "Defines how the entitlement is attached to holders and
             assets.";
          leaf universal-access {
            type boolean;
            description
              "True if entitlement has universal access.";
          }
          container holders {
            description
              "Holders of this entitlement.
               This is for information purposes only, it
               does not apply any restrictions on who can
               use or not the asset where assigned
               to the entitlement.";
            container organizations_names {
              description
                "Organization holders.";
              leaf-list organizations {
                type string;
                description
                  "List of organization names.";
              }
            }
            container users_names {
              description
                "User holders.";
              leaf-list users {
                type string;
                description
                  "List of user names.";
              }
            }
          }
          container assets {
            description
              "Assets to which this entitlement is attached.";
            container elements {
              description
                "Network elements covered by this entitlement.";
              leaf-list network-elements {
                type leafref {
                  path "/inv:network-inventory"
                     + "/inv:network-elements/inv:network-element"
                     + "/inv:ne-id";
                }
                description
                  "References to network elements covered by this
                   entitlement.  When specified, this entitlement
                   applies to the listed network elements.";
              }
            }
            container components {
              description
                "Individual components covered by this entitlement.";
              list component {
                key "network-element component-id";
                description
                  "List of specific components to which this
                   entitlement applies.  Allows fine-grained
                   entitlement assignment at the component level
                   rather than entire network elements.";
                leaf network-element {
                  type leafref {
                    path "/inv:network-inventory"
                       + "/inv:network-elements"
                       + "/inv:network-element/inv:ne-id";
                  }
                  description
                    "Reference to network element.";
                }
                leaf component-id {
                  type leafref {
                    path "/inv:network-inventory"
                       + "/inv:network-elements"
                       + "/inv:network-element"
                       + "[inv:ne-id=current()/../network-element]"
                       + "/inv:components/"
                       + "inv:component/inv:component-id";
                  }
                  description
                    "Reference to component within the specified
                     network element.";
                }
              }
            }
          }
        }
      }
    }
  }
}
]]></artwork>
        <section anchor="model-tree">
          <name>Model tree</name>
          <artwork><![CDATA[
module: ietf-entitlement-inventory

  augment /inv:network-inventory/inv:network-elements/inv:network-element:
    +--ro installed-entitlements!
       +--ro entitlement* [entitlement-id]
          +--ro entitlement-id    -> /inv:network-inventory/ei:entitlements/entitlement/entitlement-id
          +--ro in-use?           boolean
  augment /inv:network-inventory/inv:network-elements/inv:network-element/inv:components/inv:component:
    +--ro installed-entitlements!
       +--ro entitlement* [entitlement-id]
          +--ro entitlement-id    -> /inv:network-inventory/ei:entitlements/entitlement/entitlement-id
          +--ro in-use?           boolean
  augment /inv:network-inventory/inv:network-elements/inv:network-element:
    +--ro capabilities!
       +--ro capability-class* [capability-class]
          +--ro capability-class    identityref
          +--ro capability* [capability-id]
             +--ro capability-id                      string
             +--ro extended-capability-description?   string
             +--ro entitlement-state!
             |  +--ro allowed?   boolean
             |  +--ro in-use?    boolean
             +--ro supporting-entitlements!
             |  +--ro supporting-entitlement* [entitlement-id]
             |     +--ro entitlement-id    -> ../../../../../../installed-entitlements/entitlement/entitlement-id
             +--ro capability-restrictions!
                +--ro capability-restriction* [restriction-id]
                   +--ro restriction-id    string
                   +--ro description?      string
                   +--ro resource-name?    string
                   +--ro units?            string
                   +--ro max-value?        int32
                   +--ro current-value?    int32
  augment /inv:network-inventory/inv:network-elements/inv:network-element/inv:components/inv:component:
    +--ro capabilities!
       +--ro capability-class* [capability-class]
          +--ro capability-class    identityref
          +--ro capability* [capability-id]
             +--ro capability-id                      string
             +--ro extended-capability-description?   string
             +--ro entitlement-state!
             |  +--ro allowed?   boolean
             |  +--ro in-use?    boolean
             +--ro supporting-entitlements!
             |  +--ro supporting-entitlement* [entitlement-id]
             |     +--ro entitlement-id    -> ../../../../../../installed-entitlements/entitlement/entitlement-id
             +--ro capability-restrictions!
                +--ro capability-restriction* [restriction-id]
                   +--ro restriction-id    string
                   +--ro description?      string
                   +--ro resource-name?    string
                   +--ro units?            string
                   +--ro max-value?        int32
                   +--ro current-value?    int32
  augment /inv:network-inventory:
    +--ro entitlements!
       +--ro entitlement* [entitlement-id]
          +--ro entitlement-id            string
          +--ro product-id?               string
          +--ro sku?                      string
          +--ro vendor?                   string
          +--ro part-number?              string
          +--ro state?                    entitlement-state-t
          +--ro renewal-profile
          |  +--ro activation-date?   yang:date-and-time
          |  +--ro start-date?        yang:date-and-time
          |  +--ro expiration-date?   yang:date-and-time
          +--ro restrictions!
          |  +--ro restriction* [restriction-id]
          |     +--ro restriction-id    string
          |     +--ro description?      string
          |     +--ro resource-name?    string
          |     +--ro units?            string
          |     +--ro max-value?        int32
          |     +--ro current-value?    int32
          +--ro parent-entitlement-uid?   -> ../../entitlement/entitlement-id
          +--ro entitlement-attachment
             +--ro universal-access?   boolean
             +--ro holders
             |  +--ro organizations_names
             |  |  +--ro organizations*   string
             |  +--ro users_names
             |     +--ro users*   string
             +--ro assets
                +--ro elements
                |  +--ro network-elements*   -> /inv:network-inventory/network-elements/network-element/ne-id
                +--ro components
                   +--ro component* [network-element component-id]
                      +--ro network-element    -> /inv:network-inventory/network-elements/network-element/ne-id
                      +--ro component-id       -> /inv:network-inventory/network-elements/network-element[inv:ne-id=current()/../network-element]/components/component/component-id
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="implementation-examples-and-validation-scenarios">
      <name>Implementation Examples and Validation Scenarios</name>
      <t>This section provides a progressive, from basic to advanced, series of validated JSON examples demonstrating practical implementation patterns for the entitlement inventory model. The examples are organized from simple to more complex, enabling implementers to:</t>
      <ol spacing="normal" type="1"><li>
          <t>Understand core concepts through minimal working examples.</t>
        </li>
        <li>
          <t>Explore operational scenarios.</t>
        </li>
        <li>
          <t>Identify implementation patterns for common use cases.</t>
        </li>
        <li>
          <t>Validate their own implementations against canonical examples.</t>
        </li>
      </ol>
      <t>Each example:
- Addresses specific operational questions
- Builds upon concepts introduced in previous examples
- Includes contextual explanation of design choices
- Provides JSON that validates against the ietf-entitlement-inventory YANG module.</t>
      <t>In order to use the examples:
- Start with Basic Structure Example to understand fundamental relationships
- Progress through examples based on your deployment scenario
- Refer to the YANG module trees introduced in the draft, for complete model structure</t>
      <section anchor="overview-of-examples">
        <name>Overview of Examples</name>
        <t>The following table summarizes the examples provided in this section and the primary concepts each demonstrates:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Example</th>
              <th align="left">Title</th>
              <th align="left">Complexity</th>
              <th align="left">Key Concepts</th>
              <th align="left">Operational Question Addressed</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">Basic Structure</td>
              <td align="left">Simple</td>
              <td align="left">Fundamental relationships, entitlement states</td>
              <td align="left">What are the core components of the model?</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Expired License Handling</td>
              <td align="left">Simple</td>
              <td align="left">Lifecycle management, state transitions</td>
              <td align="left">How does the model handle expired entitlements?</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Utilization Tracking</td>
              <td align="left">Moderate</td>
              <td align="left">Restrictions, usage monitoring</td>
              <td align="left">What constraints apply and how to track usage?</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Hierarchical Entitlements</td>
              <td align="left">Moderate</td>
              <td align="left">Parent-child relationships, tiered licensing</td>
              <td align="left">How to model license upgrades and dependencies?</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">License Pooling</td>
              <td align="left">Advanced</td>
              <td align="left">Shared entitlements, multi-device allocation</td>
              <td align="left">How to manage pooled licenses across devices?</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Multi-Vendor Environment</td>
              <td align="left">Advanced</td>
              <td align="left">Heterogeneous networks, vendor diversity</td>
              <td align="left">How to unify entitlements across vendors?</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">Component-Level Entitlements</td>
              <td align="left">Advanced</td>
              <td align="left">Modular devices, granular licensing</td>
              <td align="left">How to track entitlements for device components?</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">Capability Class Extension</td>
              <td align="left">Expert</td>
              <td align="left">Extensibility, external references</td>
              <td align="left">How to integrate custom capability models?</td>
            </tr>
          </tbody>
        </table>
        <t><strong>Legend:</strong>
-  Simple: Foundational concepts, minimal complexity
-  Moderate: Multi-component scenarios, intermediate concepts
-  Advanced: Complex deployments, advanced patterns
-  Expert: Extensibility and customization</t>
      </section>
      <section anchor="basic-structure">
        <name>Basic Structure</name>
        <section anchor="scenario">
          <name>Scenario</name>
          <t>A network operator has purchased a single routing license for a router. The license enables basic routing capabilities. This represents the simplest possible deployment: one device, one entitlement, one capability.</t>
        </section>
        <section anchor="operational-context">
          <name>Operational Context</name>
          <t>This example answers the fundamental questions:
- What entitlements does the organization own?
- Which device is this entitlement installed on?
- What capability does this entitlement enable?
- Is the capability currently allowed and in-use? This is based on the entitlement-state field.</t>
        </section>
        <section anchor="json-example">
          <name>JSON Example</name>
          <artwork><![CDATA[
{
  "ietf-network-inventory:network-inventory": {
    "network-elements": {
      "network-element": [
        {
          "ne-id": "router-1",
          "components": {
            "component": [
              {
                "component-id": "chassis-router-1",
                "class": "iana-hardware:chassis"
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "ent-1"
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "generic-routing-functions",
                    "extended-capability-description": "Basic routing capablities",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                    "supporting-entitlement": [
                      {
                        "entitlement-id": "ent-1"
                      }
                    ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "ietf-entitlement-inventory:entitlements": {
          "entitlement": [
            {
              "entitlement-id": "ent-1",
              "product-id": "prod-1",
              "state": "active",
              "renewal-profile": {
                "activation-date": "2025-01-01T00:00:00Z",
                "expiration-date": "2026-01-01T00:00:00Z"
              },
              "entitlement-attachment": {
                "universal-access": false,
                "holders": {
                  "organizations_names": {
                    "organizations": ["org-1"]
                  }
                },
                "assets": {
                "elements": {
                  "network-elements": ["router-1"]
                }
              }
              }
            }
          ]
        }
  }
}
]]></artwork>
        </section>
      </section>
      <section anchor="expired-license-handling">
        <name>Expired License Handling</name>
        <section anchor="scenario-1">
          <name>Scenario</name>
          <t>The basic structure example showed a healthy state where an active entitlement enables a capability.  However, entitlements have lifecycles, they can expire, be revoked, or become inactive. This example demonstrates how the model represents these state transitions and their impact on capabilities.</t>
          <t>This example demonstrates how the model handles entitlement lifecycle states. An expired security entitlement results in capabilities being disallowed (allowed: false), while an active routing entitlement keeps its capabilities enabled. The installed-entitlements list shows in-use status reflecting actual capability usage.</t>
        </section>
        <section anchor="operational-context-1">
          <name>Operational Context</name>
          <t>Based on the state comparison: Active vs Expired, there is an operational impact with the corresponding risk analysis.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Aspect</th>
                <th align="left">Impact</th>
                <th align="left">Remediation</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <strong>Security capabilities</strong></td>
                <td align="left">Disabled, features stopped</td>
                <td align="left">Renew ent-sec-001 or purchase new license</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Routing capabilities</strong></td>
                <td align="left">Unaffected, continue operating</td>
                <td align="left">Monitor expiration date (2025-06-30)</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Device operation</strong></td>
                <td align="left">Continues with reduced functionality</td>
                <td align="left">Plan renewal before 2025-06-30</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Compliance risk</strong></td>
                <td align="left">Potential breach if security required</td>
                <td align="left">Immediate action if security is mandatory</td>
              </tr>
            </tbody>
          </table>
          <t>Implementation considerations should consider:
- Do not delete the entitlement record (preserve for audit)
- Do not immediately remove installed-entitlement (keep for renewal)
- Do not affect unrelated entitlements on the same device</t>
        </section>
        <section anchor="json-example-1">
          <name>JSON Example</name>
          <artwork><![CDATA[
{
  "ietf-network-inventory:network-inventory": {
    "ietf-entitlement-inventory:entitlements": {
      "entitlement": [
        {
          "entitlement-id": "security-features",
          "product-id": "SEC-ADVANCED-1Y",
          "state": "expired",
          "renewal-profile": {
            "start-date": "2023-10-01T00:00:00Z",
            "activation-date": "2023-10-01T00:00:00Z",
            "expiration-date": "2024-10-01T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": ["org-1"]
              }
            },
            "assets": {
              "elements": {
                "network-elements": ["edge-router-12"]
              }
            }
          }
        },
        {
          "entitlement-id": "basic-routing-active",
          "product-id": "ROUTING-BASE-3Y",
          "state": "active",
          "renewal-profile": {
            "start-date": "2024-01-01T00:00:00Z",
            "activation-date": "2024-01-01T00:00:00Z",
            "expiration-date": "2027-01-01T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": ["org-1"]
              }
            },
            "assets": {
              "elements": {
                "network-elements": ["edge-router-12"]
              }
            }
          }
        }
      ]
    },
    "network-elements": {
      "network-element": [
        {
        "ne-id": "edge-router-12",
        "components": {
          "component": [
            {
              "component-id": "main-chassis",
              "class": "iana-hardware:chassis"
            }
          ]
        },
        "ietf-entitlement-inventory:installed-entitlements": {
          "entitlement": [
            {
              "entitlement-id": "security-features",
              "in-use": false
            },
            {
              "entitlement-id": "basic-routing-active",
              "in-use": true
            }
          ]
        },
        "ietf-entitlement-inventory:capabilities": {
          "capability-class": [
            {
              "capability-class": "basic-capability-description",
              "capability": [
                {
                  "capability-id": "stateful-firewall",
                  "extended-capability-description": "Stateful firewall",
                  "entitlement-state": {
                    "allowed": false,
                    "in-use": false
                  },
                  "supporting-entitlements": {
                  "supporting-entitlement": [
                    {
                      "entitlement-id": "security-features"
                    }
                  ]
                  },
                  "capability-restrictions": {
                  "capability-restriction": [
                    {
                      "restriction-id": "firewall-sessions",
                      "description": "Maximum concurrent firewall sessions",
                      "resource-name": "sessions",
                      "units": "connections",
                      "max-value": 50000,
                      "current-value": 0
                    }
                  ]
                }
                },
                {
                  "capability-id": "ipsec-vpn",
                  "extended-capability-description": "IPSec VPN tunnels",
                  "entitlement-state": {
                    "allowed": false,
                    "in-use": false
                  },
                  "supporting-entitlements": {
                  "supporting-entitlement": [
                    {
                      "entitlement-id": "security-features"
                    }
                  ]
                  },
                  "capability-restrictions": {
                  "capability-restriction": [
                    {
                      "restriction-id": "vpn-tunnels",
                      "description": "Maximum VPN tunnels",
                      "resource-name": "tunnels",
                      "units": "tunnels",
                      "max-value": 100,
                      "current-value": 0
                    }
                  ]
                  }
                },
                {
                  "capability-id": "ospf-routing",
                  "extended-capability-description": "OSPF",
                  "entitlement-state": {
                    "allowed": true,
                    "in-use": true
                  },
                  "supporting-entitlements": {
                  "supporting-entitlement": [
                    {
                      "entitlement-id": "basic-routing-active"
                    }
                  ]
                  },
                  "capability-restrictions": {
                  "capability-restriction": [
                    {
                      "restriction-id": "ospf-neighbors",
                      "description": "Maximum OSPF neighbor adjacencies, just to give an example :)",
                      "resource-name": "neighbors",
                      "units": "adjacencies",
                      "max-value": 50,
                      "current-value": 8
                    }
                  ]
                  }
                }
              ]
            }
          ]
        }
      }
      ]
    }
  }
}
]]></artwork>
        </section>
      </section>
      <section anchor="utilization-tracking-with-restrictions">
        <name>Utilization Tracking with Restrictions</name>
        <section anchor="scenario-2">
          <name>Scenario</name>
          <t>This example shows comprehensive utilization tracking across multiple capabilities. Each capability includes capability-restrictions with current-value and max-value fields, enabling organizations to monitor resource consumption against licensed limits. This addresses the question: "What constraints apply and what are current usage levels?"</t>
        </section>
        <section anchor="operational-context-2">
          <name>Operational Context</name>
        </section>
        <section anchor="json-example-2">
          <name>JSON Example</name>
          <artwork><![CDATA[
{
  "ietf-network-inventory:network-inventory": {
    "network-elements": {
    "network-element": [
      {
        "ne-id": "enterprise-router-5",
        "components": {
          "component": [
            {
              "component-id": "main-chassis",
              "class": "iana-hardware:chassis"
            }
          ]
        },
        "ietf-entitlement-inventory:installed-entitlements": {
          "entitlement": [
            {
              "entitlement-id": "security-suite-ent",
              "in-use": true
            },
            {
              "entitlement-id": "advanced-routing-ent",
              "in-use": true
            },
            {
              "entitlement-id": "voice-gateway-ent",
              "in-use": false
            }
          ]
        },
        "ietf-entitlement-inventory:capabilities": {
          "capability-class": [
            {
              "capability-class": "basic-capability-description",
              "capability": [
                {
                  "capability-id": "firewall",
                  "extended-capability-description": "firewall",
                  "entitlement-state": {
                    "allowed": true,
                    "in-use": true
                  },
                  "supporting-entitlements": {
                    "supporting-entitlement": [
                      {
                        "entitlement-id": "security-suite-ent"
                      }
                    ]
                  },
                  "capability-restrictions": {
                    "capability-restriction": [
                      {
                        "restriction-id": "concurrent-sessions",
                      "description": "Maximum concurrent firewall sessions",
                      "resource-name": "sessions",
                      "units": "connections",
                        "max-value": 100000,
                        "current-value": 45000
                      }
                    ]
                  }
                },
                {
                  "capability-id": "vpn",
                  "extended-capability-description": "IPSec VPN tunnels",
                  "entitlement-state": {
                    "allowed": true,
                    "in-use": true
                  },
                  "supporting-entitlements": {
                    "supporting-entitlement": [
                      {
                        "entitlement-id": "security-suite-ent"
                      }
                    ]
                  },
                  "capability-restrictions": {
                    "capability-restriction": [
                      {
                        "restriction-id": "tunnel-count",
                      "description": "Maximum VPN tunnels",
                      "resource-name": "tunnels",
                      "units": "count",
                        "max-value": 500,
                        "current-value": 120
                      }
                    ]
                  }
                },
                {
                  "capability-id": "bgp-advanced",
                  "extended-capability-description": "Advanced BGP features including route reflector",
                  "entitlement-state": {
                    "allowed": true,
                    "in-use": true
                  },
                  "supporting-entitlements": {
                    "supporting-entitlement": [
                      {
                        "entitlement-id": "advanced-routing-ent"
                      }
                    ]
                  },
                  "capability-restrictions": {
                    "capability-restriction": [
                      {
                        "restriction-id": "bgp-peers",
                      "description": "Maximum BGP peer sessions",
                      "resource-name": "peers",
                      "units": "sessions",
                        "max-value": 200,
                        "current-value": 75
                      }
                    ]
                  }
                }
              ]
            }
          ]
        }
      }
    ]
    },
    "ietf-entitlement-inventory:entitlements": {
      "entitlement": [
        {
          "entitlement-id": "security-suite-ent",
          "product-id": "SEC-SUITE-ENTERPRISE-001",
          "state": "active",
          "renewal-profile": {
            "start-date": "2024-06-01T00:00:00Z",
            "activation-date": "2024-06-15T00:00:00Z",
            "expiration-date": "2025-06-15T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": ["Enterprise Corp"]
              }
            },
            "assets": {
              "elements": {
                "network-elements": ["enterprise-router-5"]
              }
            }
          }
        },
        {
          "entitlement-id": "advanced-routing-ent",
          "product-id": "ROUTING-ADVANCED-001",
          "state": "active",
          "renewal-profile": {
            "start-date": "2024-06-01T00:00:00Z",
            "activation-date": "2024-06-15T00:00:00Z",
            "expiration-date": "2025-06-15T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": ["Enterprise Corp"]
              }
            },
            "assets": {
              "elements": {
                "network-elements": ["enterprise-router-5"]
              }
            }
          }
        },
        {
          "entitlement-id": "voice-gateway-ent",
          "product-id": "VOICE-GW-PREMIUM-001",
          "state": "active",
          "renewal-profile": {
            "start-date": "2024-12-01T00:00:00Z",
            "activation-date": "2024-12-15T00:00:00Z",
            "expiration-date": "2025-12-15T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": ["Enterprise Corp"]
              },
              "users_names": {
                "users": ["telecom-admin"]
              }
            },
            "assets": {
              "elements": {
                "network-elements": ["enterprise-router-5"]
              }
            }
          },
          "restrictions": {
            "restriction": [
              {
                "restriction-id": "voice-channels",
                "description": "Maximum concurrent voice channels",
                "units": "channels",
                "max-value": 100,
                "current-value": 0
              }
            ]
          }
        }
      ]
    }
  }
}
]]></artwork>
        </section>
      </section>
      <section anchor="hierarchical-entitlements">
        <name>Hierarchical Entitlements</name>
        <section anchor="scenario-3">
          <name>Scenario</name>
          <t>This example demonstrates the parent-entitlement-uid mechanism for modeling entitlement hierarchies. A base "bronze" entitlement provides foundational capabilities, while a "silver" upgrade entitlement (referencing the bronze as parent) adds advanced features. This pattern supports tiered licensing models.</t>
        </section>
        <section anchor="json-example-3">
          <name>JSON Example</name>
          <artwork><![CDATA[
{
  "ietf-network-inventory:network-inventory": {
    "ietf-entitlement-inventory:entitlements": {
      "entitlement": [
        {
          "entitlement-id": "bronze-routing-base",
          "product-id": "ROUTER-BRONZE-BASE",
          "state": "active",
          "renewal-profile": {
            "start-date": "2024-01-01T00:00:00Z",
            "activation-date": "2024-01-15T00:00:00Z",
            "expiration-date": "2027-01-15T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "Enterprise Networks"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "branch-router-1",
                  "branch-router-2"
                ]
              }
            }
          }
        },
        {
          "entitlement-id": "silver-routing-upgrade",
          "product-id": "ROUTER-SILVER-UPGRADE",
          "parent-entitlement-uid": "bronze-routing-base",
          "state": "active",
          "renewal-profile": {
            "start-date": "2025-06-01T00:00:00Z",
            "activation-date": "2025-06-15T00:00:00Z",
            "expiration-date": "2027-01-15T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "Enterprise Networks"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "branch-router-2"
                ]
              }
            }
          }
        }
      ]
    },
    "network-elements": {
      "network-element": [
        {
          "ne-id": "branch-router-1",
          "components": {
            "component": [
              {
                "component-id": "main-unit",
                "class": "iana-hardware:chassis"
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "bronze-routing-base",
                "in-use": true
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "ospf-routing",
                    "extended-capability-description": "OSPF dynamic routing protocol",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "bronze-routing-base"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "ospf-areas",
                          "description": "Maximum OSPF areas",
                          "resource-name": "routing-areas",
                          "units": "areas",
                          "max-value": 10,
                          "current-value": 3
                        }
                      ]
                    }
                  },
                  {
                    "capability-id": "static-routing",
                    "extended-capability-description": "Static route configuration",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "bronze-routing-base"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "static-routes",
                          "description": "Maximum static routes",
                          "resource-name": "routes",
                          "units": "routes",
                          "max-value": 500,
                          "current-value": 127
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        },
        {
          "ne-id": "branch-router-2",
          "components": {
            "component": [
              {
                "component-id": "main-unit",
                "class": "iana-hardware:chassis"
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "bronze-routing-base",
                "in-use": true
              },
              {
                "entitlement-id": "silver-routing-upgrade",
                "in-use": true
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "ospf-routing",
                    "extended-capability-description": "OSPF dynamic routing protocol",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "bronze-routing-base"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "ospf-areas",
                          "description": "Maximum OSPF areas",
                          "resource-name": "routing-areas",
                          "units": "areas",
                          "max-value": 10,
                          "current-value": 5
                        }
                      ]
                    }
                  },
                  {
                    "capability-id": "static-routing",
                    "extended-capability-description": "Static route configuration",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "bronze-routing-base"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "static-routes",
                          "description": "Maximum static routes",
                          "resource-name": "routes",
                          "units": "routes",
                          "max-value": 500,
                          "current-value": 89
                        }
                      ]
                    }
                  },
                  {
                    "capability-id": "bgp-routing",
                    "extended-capability-description": "BGP routing protocol with route policies",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "bronze-routing-base"
                        },
                        {
                          "entitlement-id": "silver-routing-upgrade"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "bgp-peers",
                          "description": "Maximum BGP peer sessions",
                          "resource-name": "bgp-sessions",
                          "units": "peers",
                          "max-value": 100,
                          "current-value": 24
                        }
                      ]
                    }
                  },
                  {
                    "capability-id": "mpls",
                    "extended-capability-description": "MPLS label switching",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "bronze-routing-base"
                        },
                        {
                          "entitlement-id": "silver-routing-upgrade"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "mpls-lsps",
                          "description": "Maximum MPLS label-switched paths",
                          "resource-name": "lsps",
                          "units": "paths",
                          "max-value": 200,
                          "current-value": 87
                        }
                      ]
                    }
                  },
                  {
                    "capability-id": "advanced-qos",
                    "extended-capability-description": "Advanced QoS with traffic shaping",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": false
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "bronze-routing-base"
                        },
                        {
                          "entitlement-id": "silver-routing-upgrade"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "qos-classes",
                          "description": "Maximum QoS traffic classes",
                          "resource-name": "qos-classes",
                          "units": "classes",
                          "max-value": 16,
                          "current-value": 0
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}
]]></artwork>
        </section>
      </section>
      <section anchor="license-pooling">
        <name>License Pooling</name>
        <section anchor="scenario-4">
          <name>Scenario</name>
          <t>This example shows how shared entitlements can be installed across multiple network elements. A pool-based license is defined once at the network-inventory level with global restrictions (total seats), then installed on multiple routers. Each router's capabilities reference the shared entitlement, and individual capability-restrictions track per-device usage against the pool.</t>
        </section>
        <section anchor="json-example-4">
          <name>JSON Example</name>
          <artwork><![CDATA[
{
  "ietf-network-inventory:network-inventory": {
    "network-elements": {
      "network-element": [
        {
          "ne-id": "datacenter-router-1",
          "components": {
            "component": [
              {
                "component-id": "main-chassis",
                "class": "iana-hardware:chassis"
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "enterprise-license-pool"
              },
              {
                "entitlement-id": "advanced-security-pool"
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "enterprise-routing",
                    "extended-capability-description": "Enterprise routing protocols",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "enterprise-license-pool"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "bgp-peers",
                          "description": "Maximum BGP peers",
                          "resource-name": "bgp-sessions",
                          "units": "peers",
                          "max-value": 500,
                          "current-value": 245
                        }
                      ]
                    }
                  },
                  {
                    "capability-id": "advanced-firewall",
                    "extended-capability-description": "Enterprise firewall",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "advanced-security-pool"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "firewall-throughput",
                          "description": "Maximum firewall throughput",
                          "resource-name": "throughput",
                          "units": "Gbps",
                          "max-value": 40,
                          "current-value": 28
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        },
        {
          "ne-id": "datacenter-router-2",
          "components": {
            "component": [
              {
                "component-id": "main-chassis",
                "class": "iana-hardware:chassis"
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "enterprise-license-pool"
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "enterprise-routing",
                    "extended-capability-description": "Enterprise routing protocol",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "enterprise-license-pool"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "bgp-peers",
                          "description": "Maximum BGP peers",
                          "resource-name": "bgp-sessions",
                          "units": "peers",
                          "max-value": 500,
                          "current-value": 178
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        },
        {
          "ne-id": "branch-router-1",
          "components": {
            "component": [
              {
                "component-id": "main-unit",
                "class": "iana-hardware:chassis"
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "advanced-security-pool"
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "advanced-firewall",
                    "extended-capability-description": "Enterprise firewall",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "advanced-security-pool"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "firewall-throughput",
                          "description": "Maximum firewall throughput",
                          "resource-name": "throughput",
                          "units": "Gbps",
                          "max-value": 10,
                          "current-value": 7
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "ietf-entitlement-inventory:entitlements": {
      "entitlement": [
        {
          "entitlement-id": "enterprise-license-pool",
          "product-id": "ENT-ROUTER-POOL-100",
          "state": "active",
          "renewal-profile": {
            "start-date": "2025-01-01T00:00:00Z",
            "activation-date": "2025-01-15T00:00:00Z",
            "expiration-date": "2026-01-15T00:00:00Z"
          },
          "restrictions": {
            "restriction": [
              {
                "restriction-id": "license-consumption",
                "description": "Enterprise router licenses consumed from pool",
                "units": "licenses",
                "max-value": 100,
                "current-value": 87
              }
            ]
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "Company-A"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "datacenter-router-1",
                  "datacenter-router-2"
                ]
              }
            }
          }
        },
        {
          "entitlement-id": "advanced-security-pool",
          "product-id": "SEC-FIREWALL-POOL-25",
          "state": "active",
          "renewal-profile": {
            "start-date": "2025-03-01T00:00:00Z",
            "activation-date": "2025-03-01T00:00:00Z",
            "expiration-date": "2026-03-01T00:00:00Z"
          },
          "restrictions": {
            "restriction": [
              {
                "restriction-id": "license-consumption",
                "description": "Security licenses consumed from pool (high utilization)",
                "units": "licenses",
                "max-value": 25,
                "current-value": 21
              },
              {
                "restriction-id": "total-throughput",
                "description": "Aggregate firewall throughput across all devices (real-time snapshot)",
                "resource-name": "throughput",
                "units": "Gbps",
                "max-value": 100,
                "current-value": 50
              }
            ]
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "Company-A"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "datacenter-router-1",
                  "branch-router-1"
                ]
              }
            }
          }
        }
      ]
    }
  }
}
]]></artwork>
        </section>
      </section>
      <section anchor="multi-vendor-environment">
        <name>Multi-Vendor Environment</name>
        <section anchor="scenario-5">
          <name>Scenario</name>
          <t>This example illustrates entitlement management in a heterogeneous network with devices from multiple vendors. Each vendor may use different licensing models (consumption-based, perpetual, subscription), but the unified model captures all entitlements consistently. The example shows how organizations gain visibility across their entire multi-vendor infrastructure.</t>
        </section>
        <section anchor="json-example-5">
          <name>JSON Example</name>
          <artwork><![CDATA[
{
  "ietf-network-inventory:network-inventory": {
    "network-elements": {
      "network-element": [
        {
          "ne-id": "vendor-a-router-hq-1",
          "components": {
            "component": [
              {
                "component-id": "chassis",
                "class": "iana-hardware:chassis"
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "vendor-a-sdwan-consumption"
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "sd-wan",
                    "extended-capability-description": "SD-WAN with consumption-based billing",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "vendor-a-sdwan-consumption"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "active-tunnels",
                          "description": "Current active SD-WAN tunnels",
                          "resource-name": "tunnels",
                          "units": "count",
                          "max-value": 100,
                          "current-value": 45
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        },
        {
          "ne-id": "vendor-b-switch-dc-1",
          "components": {
            "component": [
              {
                "component-id": "main-unit",
                "class": "iana-hardware:chassis"
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "vendor-b-datacenter-perpetual"
              },
              {
                "entitlement-id": "vendor-b-support-subscription"
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "evpn-vxlan",
                    "extended-capability-description": "EVPN-VXLAN overlay",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "vendor-b-datacenter-perpetual"
                        },
                        {
                          "entitlement-id": "vendor-b-support-subscription"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "vxlan-tunnels",
                          "description": "Maximum VXLAN tunnel endpoints",
                          "resource-name": "vteps",
                          "units": "endpoints",
                          "max-value": 500,
                          "current-value": 234
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        },
        {
          "ne-id": "vendor-c-switch-dc-2",
          "components": {
            "component": [
              {
                "component-id": "chassis",
                "class": "iana-hardware:chassis"
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "vendor-c-telemetry-tier-standard"
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "streaming-telemetry",
                    "extended-capability-description": "Streaming telemetry tier",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "vendor-c-telemetry-tier-standard"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "telemetry-streams",
                          "description": "Maximum concurrent telemetry streams",
                          "resource-name": "streams",
                          "units": "streams",
                          "max-value": 200,
                          "current-value": 87
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "ietf-entitlement-inventory:entitlements": {
      "entitlement": [
        {
          "entitlement-id": "vendor-a-sdwan-consumption",
          "product-id": "SDWAN-CONSUMPTION-BILLING",
          "sku": "L-SDWAN-CONSUMPTION",
          "vendor": "Vendor-A",
          "part-number": "SDWAN-CONSUMPTION-LIC",
          "state": "active",
          "renewal-profile": {
            "start-date": "2025-01-01T00:00:00Z",
            "activation-date": "2025-01-01T00:00:00Z"
          },
          "restrictions": {
            "restriction": [
              {
                "restriction-id": "monthly-bandwidth-consumed",
                "description": "Total bandwidth consumed this billing period",
                "resource-name": "bandwidth",
                "units": "GB",
                "max-value": 10000,
                "current-value": 7234
              }
            ]
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "Enterprise IT Dept"
                ]
              },
              "users_names": {
                "users": [
                  "network-admin"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "vendor-a-router-hq-1"
                ]
              }
            }
          }
        },
        {
          "entitlement-id": "vendor-b-datacenter-perpetual",
          "product-id": "DC-EVPN-VXLAN-PERPETUAL",
          "sku": "S-EVPN-PERM",
          "vendor": "Vendor-B",
          "part-number": "DC-EVPN-PERPETUAL-LIC",
          "state": "active",
          "renewal-profile": {
            "activation-date": "2023-03-15T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "Enterprise IT Dept"
                ]
              },
              "users_names": {
                "users": [
                  "datacenter-ops"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "vendor-b-switch-dc-1"
                ]
              }
            }
          }
        },
        {
          "entitlement-id": "vendor-b-support-subscription",
          "product-id": "DC-SUPPORT-ANNUAL",
          "sku": "S-SUPPORT-1Y",
          "vendor": "Vendor-B",
          "part-number": "DC-SUPPORT-SUB-1Y",
          "state": "active",
          "renewal-profile": {
            "start-date": "2024-10-01T00:00:00Z",
            "activation-date": "2024-10-01T00:00:00Z",
            "expiration-date": "2025-10-01T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "Enterprise IT Dept"
                ]
              },
              "users_names": {
                "users": [
                  "datacenter-ops"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "vendor-b-switch-dc-1"
                ]
              }
            }
          }
        },
        {
          "entitlement-id": "vendor-c-telemetry-tier-standard",
          "product-id": "TELEMETRY-STD-50DEV-1Y",
          "sku": "TELEM-STD-50-1Y",
          "vendor": "Vendor-C",
          "part-number": "TELEM-STD-TIER-1Y",
          "state": "active",
          "renewal-profile": {
            "start-date": "2025-01-01T00:00:00Z",
            "activation-date": "2025-01-01T00:00:00Z",
            "expiration-date": "2026-01-01T00:00:00Z"
          },
          "restrictions": {
            "restriction": [
              {
                "restriction-id": "subscribed-device-count",
                "description": "Device count in subscribed tier",
                "units": "devices",
                "max-value": 50,
                "current-value": 50
              },
              {
                "restriction-id": "current-device-count",
                "description": "Actual devices currently managed (may exceed tier for overage billing)",
                "units": "devices",
                "max-value": 150,
                "current-value": 63
              }
            ]
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "Enterprise IT Dept"
                ]
              },
              "users_names": {
                "users": [
                  "datacenter-ops",
                  "noc-team"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "vendor-c-switch-dc-2"
                ]
              }
            }
          }
        }
      ]
    }
  }
}
]]></artwork>
        </section>
      </section>
      <section anchor="component-level-entitlements">
        <name>Component-Level Entitlements</name>
        <section anchor="scenario-6">
          <name>Scenario</name>
          <t>This example demonstrates entitlement tracking at the component level within a modular network element. Individual line cards have their own port licenses, while the chassis has system-level entitlements. This addresses scenarios where different components within the same device have independent entitlement requirements, such as pay-as-you-grow deployments.</t>
        </section>
        <section anchor="json-example-6">
          <name>JSON Example</name>
          <artwork><![CDATA[
{
  "ietf-network-inventory:network-inventory": {
    "ietf-entitlement-inventory:entitlements": {
      "entitlement": [
        {
          "entitlement-id": "base-system-license",
          "product-id": "ROUTER-BASE-2025",
          "state": "active",
          "renewal-profile": {
            "activation-date": "2025-01-01T00:00:00Z",
            "start-date": "2025-01-01T00:00:00Z",
            "expiration-date": "2026-01-01T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "corp-a"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "modular-router-dc1"
                ]
              }
            }
          }
        },
        {
          "entitlement-id": "advanced-routing-license",
          "product-id": "NET-ADV-ROUTE-100",
          "state": "active",
          "renewal-profile": {
            "activation-date": "2025-01-15T00:00:00Z",
            "start-date": "2025-01-15T00:00:00Z",
            "expiration-date": "2026-01-15T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "corp-a"
                ]
              }
            },
            "assets": {
              "elements": {
                "network-elements": [
                  "modular-router-dc1"
                ]
              }
            }
          }
        },
        {
          "entitlement-id": "port-license-100g-slot1",
          "product-id": "PORT-LIC-100G-8PORT",
          "state": "active",
          "renewal-profile": {
            "activation-date": "2025-02-01T00:00:00Z",
            "start-date": "2025-02-01T00:00:00Z",
            "expiration-date": "2026-02-01T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "corp-a"
                ]
              },
              "users_names": {
                "users": [
                  "admin"
                ]
              }
            },
            "assets": {
              "components": {
                "component": [
                  {
                    "network-element": "modular-router-dc1",
                    "component-id": "linecard-slot-1"
                  }
                ]
              }
            }
          }
        },
        {
          "entitlement-id": "port-license-100g-slot2",
          "product-id": "PORT-LIC-100G-4PORT",
          "state": "active",
          "renewal-profile": {
            "activation-date": "2025-02-15T00:00:00Z",
            "start-date": "2025-02-15T00:00:00Z",
            "expiration-date": "2026-02-15T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "corp-a"
                ]
              },
              "users_names": {
                "users": [
                  "admin"
                ]
              }
            },
            "assets": {
              "components": {
                "component": [
                  {
                    "network-element": "modular-router-dc1",
                    "component-id": "linecard-slot-2"
                  }
                ]
              }
            }
          }
        },
        {
          "entitlement-id": "crypto-accelerator-license",
          "product-id": "SEC-CRYPTO-ACC",
          "state": "active",
          "renewal-profile": {
            "activation-date": "2025-03-01T00:00:00Z",
            "start-date": "2025-03-01T00:00:00Z",
            "expiration-date": "2026-03-01T00:00:00Z"
          },
          "entitlement-attachment": {
            "universal-access": false,
            "holders": {
              "organizations_names": {
                "organizations": [
                  "corp-a"
                ]
              },
              "users_names": {
                "users": [
                  "security-admin"
                ]
              }
            },
            "assets": {
              "components": {
                "component": [
                  {
                    "network-element": "modular-router-dc1",
                    "component-id": "security-module"
                  }
                ]
              }
            }
          }
        }
      ]
    },
    "network-elements": {
      "network-element": [
        {
          "ne-id": "modular-router-dc1",
          "components": {
            "component": [
              {
                "component-id": "chassis-main",
                "class": "iana-hardware:chassis"
              },
              {
                "component-id": "linecard-slot-1",
                "class": "iana-hardware:module",
                "ietf-entitlement-inventory:installed-entitlements": {
                  "entitlement": [
                    {
                      "entitlement-id": "port-license-100g-slot1"
                    }
                  ]
                },
                "ietf-entitlement-inventory:capabilities": {
                  "capability-class": [
                    {
                      "capability-class": "basic-capability-description",
                      "capability": [
                        {
                          "capability-id": "high-speed-ports-1-8",
                          "extended-capability-description": "Enable 100G ports 1-8 on linecard",
                          "entitlement-state": {
                            "allowed": true,
                            "in-use": true
                          },
                          "supporting-entitlements": {
                            "supporting-entitlement": [
                              {
                                "entitlement-id": "port-license-100g-slot1"
                              }
                            ]
                          },
                          "capability-restrictions": {
                            "capability-restriction": [
                              {
                                "restriction-id": "port-count",
                                "description": "Number of active ports",
                                "resource-name": "ports",
                                "units": "count",
                                "max-value": 8,
                                "current-value": 8
                              }
                            ]
                          }
                        }
                      ]
                    }
                  ]
                }
              },
              {
                "component-id": "linecard-slot-2",
                "class": "iana-hardware:module",
                "ietf-entitlement-inventory:installed-entitlements": {
                  "entitlement": [
                    {
                      "entitlement-id": "port-license-100g-slot2"
                    }
                  ]
                },
                "ietf-entitlement-inventory:capabilities": {
                  "capability-class": [
                    {
                      "capability-class": "basic-capability-description",
                      "capability": [
                        {
                          "capability-id": "high-speed-ports-1-4",
                          "extended-capability-description": "Enable 100G ports 1-4 on linecard",
                          "entitlement-state": {
                            "allowed": true,
                            "in-use": true
                          },
                          "supporting-entitlements": {
                            "supporting-entitlement": [
                              {
                                "entitlement-id": "port-license-100g-slot2"
                              }
                            ]
                          },
                          "capability-restrictions": {
                            "capability-restriction": [
                              {
                                "restriction-id": "port-count",
                                "description": "Number of active ports",
                                "resource-name": "ports",
                                "units": "count",
                                "max-value": 4,
                                "current-value": 4
                              }
                            ]
                          }
                        }
                      ]
                    }
                  ]
                }
              },
              {
                "component-id": "security-module",
                "class": "iana-hardware:module",
                "ietf-entitlement-inventory:installed-entitlements": {
                  "entitlement": [
                    {
                      "entitlement-id": "crypto-accelerator-license"
                    }
                  ]
                },
                "ietf-entitlement-inventory:capabilities": {
                  "capability-class": [
                    {
                      "capability-class": "basic-capability-description",
                      "capability": [
                        {
                          "capability-id": "hardware-encryption",
                          "extended-capability-description": "Hardware-accelerated encryption",
                          "entitlement-state": {
                            "allowed": true,
                            "in-use": true
                          },
                          "supporting-entitlements": {
                            "supporting-entitlement": [
                              {
                                "entitlement-id": "crypto-accelerator-license"
                              }
                            ]
                          },
                          "capability-restrictions": {
                            "capability-restriction": [
                              {
                                "restriction-id": "crypto-throughput",
                                "description": "Maximum encryption throughput",
                                "resource-name": "throughput",
                                "units": "Gbps",
                                "max-value": 100,
                                "current-value": 65
                              }
                            ]
                          }
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          },
          "ietf-entitlement-inventory:installed-entitlements": {
            "entitlement": [
              {
                "entitlement-id": "base-system-license"
              },
              {
                "entitlement-id": "advanced-routing-license"
              },
              {
                "entitlement-id": "port-license-100g-slot1"
              },
              {
                "entitlement-id": "port-license-100g-slot2"
              },
              {
                "entitlement-id": "crypto-accelerator-license"
              }
            ]
          },
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "basic-capability-description",
                "capability": [
                  {
                    "capability-id": "routing-protocols",
                    "extended-capability-description": "Advanced routing protocols (BGP, OSPF, IS-IS)",
                    "entitlement-state": {
                      "allowed": true,
                      "in-use": true
                    },
                    "supporting-entitlements": {
                      "supporting-entitlement": [
                        {
                          "entitlement-id": "advanced-routing-license"
                        }
                      ]
                    },
                    "capability-restrictions": {
                      "capability-restriction": [
                        {
                          "restriction-id": "max-routes",
                          "description": "Maximum routing table entries",
                          "resource-name": "routing-table",
                          "units": "entries",
                          "max-value": 1000000,
                          "current-value": 450000
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}
]]></artwork>
        </section>
      </section>
      <section anchor="capability-class-extension">
        <name>Capability Class Extension</name>
        <section anchor="scenario-7">
          <name>Scenario</name>
          <t>This example demonstrates extending the capability-class identity to reference external capability definitions. The example-capability-extension module derives a new capability class and augments the model to reference capabilities defined in a separate module. This pattern allows domain-specific capability models to integrate cleanly with entitlement tracking.</t>
        </section>
        <section anchor="json-example-7">
          <name>JSON Example</name>
          <artwork><![CDATA[
{
  "example-capability-framework:capabilities": {
    "capability": [
      {
        "capability-id": "cap-routing-basic",
        "description": "Basic routing functionality"
      },
      {
        "capability-id": "cap-routing-advanced",
        "description": "Advanced routing with BGP and OSPF"
      }
    ]
  },
  "ietf-network-inventory:network-inventory": {
    "network-elements": {
      "network-element": [
        {
          "ne-id": "device-1",
          "ietf-entitlement-inventory:capabilities": {
            "capability-class": [
              {
                "capability-class": "example-capability-extension:example-capability-class",
                "capability": [
                  {
                    "capability-id": "routing",
                    "example-capability-extension:capability-ref": "cap-routing-basic"
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <section anchor="entitlement-synchronization">
        <name>Entitlement Synchronization</name>
        <t>When entitlements are managed both centrally and locally, implementations <bcp14>SHOULD</bcp14> provide mechanisms to detect inconsistencies between:</t>
        <ul spacing="normal">
          <li>
            <t>Centralized entitlement records</t>
          </li>
          <li>
            <t>Locally installed entitlements</t>
          </li>
          <li>
            <t>Actual capability usage</t>
          </li>
        </ul>
      </section>
      <section anchor="entitlement-expiration-handling">
        <name>Entitlement Expiration Handling</name>
        <t>Network elements <bcp14>SHOULD</bcp14> generate notifications when installed entitlements are approaching expiration. The notification timing and handling is implementation-specific but <bcp14>SHOULD</bcp14> provide sufficient lead time for renewal.</t>
      </section>
      <section anchor="performance-considerations">
        <name>Performance Considerations</name>
        <t>Implementations tracking large numbers of entitlements <bcp14>SHOULD</bcp14> consider:</t>
        <ul spacing="normal">
          <li>
            <t>Caching strategies for frequently accessed entitlement data</t>
          </li>
          <li>
            <t>Efficient indexing of entitlement-to-capability mappings</t>
          </li>
          <li>
            <t>Minimizing overhead of entitlement validation checks</t>
          </li>
        </ul>
      </section>
      <section anchor="migration-and-version-compatibility">
        <name>Migration and Version Compatibility</name>
        <t>When migrating from vendor-specific entitlement systems, implementers should consider mapping strategies that preserve entitlement relationships while adopting this standard model.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers one URI in the "IETF XML Registry" <xref target="RFC3688"/> and one YANG module in the "YANG Module Names" registry <xref target="RFC6020"/>.</t>
      <section anchor="uri-registration">
        <name>URI Registration</name>
        <t>IANA is requested to register the following URI in the "ns" subregistry within the "IETF XML Registry" <xref target="RFC3688"/>:</t>
        <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang:ietf-entitlement-inventory
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      </section>
      <section anchor="yang-module-name-registration">
        <name>YANG Module Name Registration</name>
        <t>IANA is requested to register the following entry in the "YANG Module Names" registry <xref target="RFC6020"/>:</t>
        <artwork><![CDATA[
   Name:         ietf-entitlement-inventory
   Namespace:    urn:ietf:params:xml:ns:yang:ietf-entitlement-inventory
   Prefix:       ei
   Maintained by IANA:  N
   Reference:    RFC XXXX
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="entitlement-data-sensitivity">
        <name>Entitlement Data Sensitivity</name>
        <t>Implementations <bcp14>MUST</bcp14> protect entitlement data with appropriate access controls consistent with organizational security policies.</t>
      </section>
      <section anchor="entitlement-tampering">
        <name>Entitlement Tampering</name>
        <t>Implementations <bcp14>SHOULD</bcp14> use cryptographic signatures or similar mechanisms to verify entitlement integrity. Network elements <bcp14>SHOULD</bcp14> validate entitlements before activating capabilities.</t>
      </section>
      <section anchor="information-disclosure">
        <name>Information Disclosure</name>
        <t>Access to entitlement inventory data <bcp14>SHOULD</bcp14> be restricted to authorized personnel. Consider implementing role-based access controls that limit visibility based on operational need.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="BaseInventory">
          <front>
            <title>A Base YANG Data Model for Network Inventory</title>
            <author fullname="Chaode Yu" initials="C." surname="Yu">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Sergio Belotti" initials="S." surname="Belotti">
              <organization>Nokia</organization>
            </author>
            <author fullname="Jean-Francois Bouquier" initials="J." surname="Bouquier">
              <organization>Vodafone</organization>
            </author>
            <author fullname="Fabio Peruzzini" initials="F." surname="Peruzzini">
              <organization>FiberCop</organization>
            </author>
            <author fullname="Phil Bedard" initials="P." surname="Bedard">
              <organization>Cisco</organization>
            </author>
            <date day="5" month="February" year="2026"/>
            <abstract>
              <t>   This document defines a base YANG data model for reporting network
   inventory.  The scope of this base model is set to be application-
   and technology-agnostic.  The base data model can be augmented with
   application- and technology-specific details.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ivy-network-inventory-yang-14"/>
        </reference>
      </references>
    </references>
    <?line 3273?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document is based on work partially funded by the EU Horizon Europe projects ACROSS (grant 101097122), ROBUST-6G (grant 101139068), iTrust6G (grant 101139198), MARE (grant 101191436), and CYBERNEMO (grant 101168182).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
18/cWpmYQCN5XSJElpUF0FoNrmUgHUodHPv6APvZWxwTNx7sejq+PeMW7av6
7vR61mdNsa7lVbJ29/OV625Gw/bhadbWNRc8fvLBmh41cW7Mrbc2RVk52h0h
cce7Ktu0NvfzpSO6akM5BlY1Gs8XTQmy6imKTuLXdpxqGq+WHTVleXm+Sklm
E5Yna9KVcCJn/Hwwj8RVnolVkf89eyfeifyNIv+dWN4w9/sVy++YqfncSeXm
cyeVX82x/9OfAfu8C7h9z3zzTpt1U2zz7un5oXLLu6fnL+/puaYv/U8gJq5j
//r+E8fWiZwO/Xfz1OwdnkUyV83x0dGraOvRo9tONXOVjE8fXy3j0yftU83c
erI6dSJWRaUWGeu8t1mSK+NyIUszYVKzPJuKykHL8fTdVP1uJntdxf+prfhh
Y+1PKaXPLkij8WwZ7XzoiXxWGbQbGr73vFo1XL+BXmG26xf7J3tf77x6xRTr
8ce3TbA+uhrBau5WS7C8bj81gnUqT7KJTon743Q0tmvihUoark+6Hn/cgnI9
3vJRuoWLQaCgB7rkNItoPmh2RqM8weTAIdFM+Rjht+xOU2B6S5wjnSaimMXz
YpyVQUCtJ7itFNeuwA4+XiOb6R07sAf6YNiBr9a5GVbgSsQd12HvAN3Woq/g
pZ3lYm92kebZDDfT5LmXTiYLla7WQh4xjWfxiP9MZyIW4wS2kY2A3meLQjvs
kYudul5Ej7Tr3AUtQ7nO8b9g1KWAZ7YYpENymisrqWHFfYs+sv9fF33i5km5
iCddUSzONRHY7IrzBTvGAT4PU6CJNAh62HERGbz99qOAiGdalPD3ZIlJa5OA
C6NbxRO978RFWqSybKikKzBpmtPYecKbjuQe09kwjwGkwGRhDR+2tx4vOYoV
mo6/e48KyF+o2U7DvIBNzRxx4Ob39bNXQRaDCKB4nYD759HXO4ey2K9PegT0
mdzFmjmfNTWR7dHd2mDNLz8DbSS/oqJVxeSot4epuzLFPg8hJOK2GmntYnbU
q3VBuzYyrtW2Ws7ypjAh8O17suJJND+XAXnRoH9nyntvvPQ8ssRyLSzejO+7
OVgmlZEtgd5x7KZ5/bmlVv1iPosuvp9ci2vvfXV8GH31h1dAADN4yE7i5R2L
Np+rseh2t2jlHq+zgDZ3zFrAz1dMoPtxJSlBF7mly8EjwDt1MM9SRLT1xISL
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
juwGn3y29dnjzV7n/wN3evqwHw0CAA==

-->

</rfc>
