.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. SPDX-License-Identifier: CC-BY-4.0
.. Copyright (C) 2024 Nordix Foundation. All rights Reserved
.. Copyright (C) 2024 OpenInfra Foundation Europe. All Rights Reserved

Discover and Reconciliation Interface
#####################################

Discover and Reconciliation Interface to enrich topology with data.

Operations
==========

.. _Ingestion Create:

PUB ``ingestionCreate`` Operation
---------------------------------

*Topology & Inventory entities and relationships can be created.*

-  Operation ID: ``Ingestion``

Operation on Topology Inventory and Exposure input topic.

Message Topology CREATE ``ingestionCreate``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*Creates components in topology.*

-  Message ID: ``create``
-  Content type: application/json

CREATE Headers
^^^^^^^^^^^^^^

+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| Name           | Type   | Description                               | Value                    | Constraints     | Notes             |
+================+========+===========================================+==========================+=================+===================+
| (root)         | object | -                                         | -                        | -               | | **additional**  |
|                |        |                                           |                          |                 | | **properties**  |
|                |        |                                           |                          |                 | | **are allowed** |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_id          | string | Unique identifier for the event.          | -                        | -               | -                 |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_source      | string | Source of the CloudEvent.                 | -                        | | format        | -                 |
|                |        |                                           |                          | | (`uri`)       |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_type        | string | | Event type. It can be one of            | -                        | -               | -                 |
|                |        | | topology-inventory-ingestion.merge,     |                          |                 |                   |
|                |        | | topology-inventory-ingestion.delete, or |                          |                 |                   |
|                |        | | topology-inventory-ingestion.create.    |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| content-type   | string | | Content-type of the data contained      | | const                  | -               | -                 |
|                |        | | within the cloud event. It is           | | (`"application/json"`) |                 |                   |
|                |        | | application/json.                       |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_dataschema  | string | | URI representing the schema of the data | -                        | | format        | -                 |
|                |        | | This references the event-specific yang |                          | | (`uri`)       |                   |
|                |        | | schema.                                 |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_time        | string | Event timestamp.                          | -                        | | format        | -                 |
|                |        |                                           |                          | | (`date-time`) |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_specversion | string | | The version of the CloudEvents          | const (`"1.0"`)          | -               | -                 |
|                |        | | specification which the event uses.     |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+

..

   Examples of headers *(generated)*

.. code:: json

   {
     "ce_specversion": "1.0",
     "ce_id": "a30e63c9-d29e-46ff-b99a-b63ed83fd233",
     "ce_source": "dmi-plugin:nm-1",
     "ce_type": "topology-inventory-ingestion.create",
     "ce_time": "2023-06-12T09:05:00Z",
     "content-type": "application/json",
     "ce_dataschema": "topology-inventory-ingestion:events:create:1.0.0"
   }

CREATE Payload
^^^^^^^^^^^^^^

+------------------------------------------------------+---------------+----------------------------------------------------------------+
| Name                                                 | Type          | Description                                                    |
+======================================================+===============+================================================================+
| (root)                                               | Object        | -                                                              |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| entities                                             | Array<Object> | | Entities are topology objects comprising of an id, consumer  |
|                                                      |               | | data, attributes and metadata for each. It contains the id   |
|                                                      |               | | only in case of delete cloud event.                          |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| | entities                                           | Object        | | Entities schema is adherent to the entity types and          |
| | .<module_name>                                     |               | | attributes mentioned in the yang modules. For yang modules,  |
| | :<mo_type>                                         |               | | see [Data Models][Data Models].                              |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| relationships                                        | Array<Object> | | Relationships comprising of an A-side and a B-side for each. |
|                                                      |               | | The A-side is considered the originating side of the         |
|                                                      |               | | relationship; the B-side is considered the terminating side  |
|                                                      |               | | of the relationship. The order of A-side and B-side is of    |
|                                                      |               | | importance and MUST NOT be changed once defined. It          |
|                                                      |               | | contains the id only in case of delete event.                |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| | relationships                                      | Object        | | Relationship schema is adherent to the relationship types    |
| | .<module_name>                                     |               | | mentioned in the yang modules. For yang modules,             |
| | :<relationship_type>                               |               | | see [Data Models][Data Models].                              |
+------------------------------------------------------+---------------+----------------------------------------------------------------+

   Examples of payload *(generated)*

.. code:: json

   {
     "entities": [
       {
         "o-ran-smo-teiv-equipment:AntennaModule": [
           {
             "id": "urn:oran:smo:teiv:AntennaModule=1",
             "attributes": {
               "antennaModelNumber": "1",
               "mechanicalAntennaBearing": 50,
               "mechanicalAntennaTilt": 10,
               "positionWithinSector": "Unknown",
               "totalTilt": 14,
               "electricalAntennaTilt": 2,
               "antennaBeamWidth": [
                 35,
                 23,
                 21
               ],
               "geo-location": {
                 "latitude": 41.73297,
                 "longitude": -73.007696,
                 "height": 3000
               }
             },
             "sourceIds": [
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1,AntennaSubunit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=1,RetSubUnit=1"
             ],
             "metadata": {
               "reliabilityIndicator": "OK"
             }
           }
         ]
       },
       {
         "o-ran-smo-teiv-equipment:AntennaModule": [
           {
             "id": "urn:oran:smo:teiv:AntennaModule=2",
             "attributes": {
               "antennaModelNumber": "2",
               "mechanicalAntennaBearing": 61,
               "mechanicalAntennaTilt": 21,
               "positionWithinSector": "Unknown",
               "totalTilt": 25,
               "electricalAntennaTilt": 3,
               "antennaBeamWidth": [
                 46,
                 34,
                 32
               ],
               "geo-location": {
                 "latitude": 52.84308,
                 "longitude": -84.118707,
                 "height": 41111
               }
             },
             "sourceIds": [
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2,AntennaSubunit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=2,RetSubUnit=1"
             ],
             "metadata": {
               "reliabilityIndicator": "OK"
             }
           }
         ]
       }
     ],
     "relationships": [
       {
         "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [
           {
             "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVs=",
             "aSide": "urn:oran:smo:teiv:AntennaModule=1",
             "bSide": "urn:oran:smo:teiv:Site=1",
             "sourceIds": [
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1,AntennaSubunit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=1,RetSubUnit=1",
               "urn:oran:smo:teiv:Site=1"
             ]
           }
         ]
       },
       {
         "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [
           {
             "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVsYW5kLE1lQ2=",
             "aSide": "urn:oran:smo:teiv:AntennaModule=2",
             "bSide": "urn:oran:smo:teiv:Site=2",
             "sourceIds": [
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2,AntennaSubunit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=2,RetSubUnit=1",
               "urn:oran:smo:teiv:Site=2"
             ]
           }
         ]
       }
     ]
   }

.. _Ingestion Merge:

PUB ``ingestionMerge`` Operation
--------------------------------

*Topology & Inventory entities and relationships can be updated.*

-  Operation ID: ``Ingestion``

Operation on Topology Inventory and Exposure input topic.

Message Topology MERGE ``ingestionMerge``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*Updates components in topology.*

-  Message ID: ``merge``
-  Content type: application/json

MERGE Headers
^^^^^^^^^^^^^

+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| Name           | Type   | Description                               | Value                    | Constraints     | Notes             |
+================+========+===========================================+==========================+=================+===================+
| (root)         | object | -                                         | -                        | -               | | **additional**  |
|                |        |                                           |                          |                 | | **properties**  |
|                |        |                                           |                          |                 | | **are allowed** |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_id          | string | Unique identifier for the event.          | -                        | -               | -                 |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_source      | string | Source of the CloudEvent.                 | -                        | | format        | -                 |
|                |        |                                           |                          | | (`uri`)       |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_type        | string | | Event type. It can be one of            | -                        | -               | -                 |
|                |        | | topology-inventory-ingestion.merge,     |                          |                 |                   |
|                |        | | topology-inventory-ingestion.delete, or |                          |                 |                   |
|                |        | | topology-inventory-ingestion.create.    |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| content-type   | string | | Content-type of the data contained      | | const                  | -               | -                 |
|                |        | | within the cloud event. It is           | | (`"application/json"`) |                 |                   |
|                |        | | application/json.                       |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_dataschema  | string | | URI representing the schema of the data | -                        | | format        | -                 |
|                |        | | This references the event-specific yang |                          | | (`uri`)       |                   |
|                |        | | schema.                                 |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_time        | string | Event timestamp.                          | -                        | | format        | -                 |
|                |        |                                           |                          | | (`date-time`) |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_specversion | string | | The version of the CloudEvents          | const (`"1.0"`)          | -               | -                 |
|                |        | | specification which the event uses.     |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+

..

   Examples of headers *(generated)*

.. code:: json


   {
     "ce_specversion": "1.0",
     "ce_id": "a30e63c9-d29e-46ff-b99a-b63ed83fd234",
     "ce_source": "dmi-plugin:nm-1",
     "ce_type": "topology-inventory-ingestion.merge",
     "ce_time": "2023-06-12T09:05:00Z",
     "content-type": "application/json",
     "ce_dataschema": "topology-inventory-ingestion:events:merge:1.0.0"
   }

MERGE Payload
^^^^^^^^^^^^^

+------------------------------------------------------+---------------+----------------------------------------------------------------+
| Name                                                 | Type          | Description                                                    |
+======================================================+===============+================================================================+
| (root)                                               | Object        | -                                                              |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| entities                                             | Array<Object> | | Entities are topology objects comprising of an id, consumer  |
|                                                      |               | | data, attributes and metadata for each. It contains the id   |
|                                                      |               | | only in case of delete cloud event.                          |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| | entities                                           | Object        | | Entities schema is adherent to the entity types and          |
| | .<module_name>                                     |               | | attributes mentioned in the yang modules. For yang modules,  |
| | :<mo_type>                                         |               | | see [Data Models][Data Models].                              |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| relationships                                        | Array<Object> | | Relationships comprising of an A-side and a B-side for each. |
|                                                      |               | | The A-side is considered the originating side of the         |
|                                                      |               | | relationship; the B-side is considered the terminating side  |
|                                                      |               | | of the relationship. The order of A-side and B-side is of    |
|                                                      |               | | importance and MUST NOT be changed once defined. It          |
|                                                      |               | | contains the id only in case of delete event.                |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| | relationships                                      | Object        | | Relationship schema is adherent to the relationship types    |
| | .<module_name>                                     |               | | mentioned in the yang modules. For yang modules,             |
| | :<relationship_type>                               |               | | see [Data Models][Data Models].                              |
+------------------------------------------------------+---------------+----------------------------------------------------------------+

..

   Examples of payload *(generated)*

.. code:: json

   {
     "entities": [
       {
         "o-ran-smo-teiv-equipment:AntennaModule": [
           {
             "id": "urn:oran:smo:teiv:AntennaModule=1",
             "attributes": {
               "antennaModelNumber": "1",
               "mechanicalAntennaBearing": 50,
               "mechanicalAntennaTilt": 10,
               "positionWithinSector": "Unknown",
               "totalTilt": 14,
               "electricalAntennaTilt": 2,
               "antennaBeamWidth": [
                 35,
                 23,
                 21
               ],
               "geo-location": {
                 "latitude": 41.73297,
                 "longitude": -73.007696,
                 "height": 3000
               }
             },
             "sourceIds": [
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1,AntennaSubunit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=1,RetSubUnit=1"
             ],
             "metadata": {
               "reliabilityIndicator": "OK"
             }
           }
         ]
       },
       {
         "o-ran-smo-teiv-equipment:AntennaModule": [
           {
             "id": "urn:oran:smo:teiv:AntennaModule=2",
             "attributes": {
               "antennaModelNumber": "2",
               "mechanicalAntennaBearing": 61,
               "mechanicalAntennaTilt": 21,
               "positionWithinSector": "Unknown",
               "totalTilt": 25,
               "electricalAntennaTilt": 3,
               "antennaBeamWidth": [
                 46,
                 34,
                 32
               ],
               "geo-location": {
                 "latitude": 52.84308,
                 "longitude": -84.118707,
                 "height": 41111
               }
             },
             "sourceIds": [
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2,AntennaSubunit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=2,RetSubUnit=1"
             ],
             "metadata": {
               "reliabilityIndicator": "OK"
             }
           }
         ]
       }
     ],
     "relationships": [
       {
         "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [
           {
             "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVs=",
             "aSide": "urn:oran:smo:teiv:AntennaModule=1",
             "bSide": "urn:oran:smo:teiv:Site=1",
             "sourceIds": [
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1,AntennaSubunit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=1,RetSubUnit=1",
               "urn:oran:smo:teiv:Site=1"
             ]
           }
         ]
       },
       {
         "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [
           {
             "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVsYW5kLE1lQ2=",
             "aSide": "urn:oran:smo:teiv:AntennaModule=2",
             "bSide": "urn:oran:smo:teiv:Site=2",
             "sourceIds": [
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2,AntennaSubunit=1",
               "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=2,RetSubUnit=1",
               "urn:oran:smo:teiv:Site=2"
             ]
           }
         ]
       }
     ]
   }

.. _Ingestion Delete:

PUB ``ingestionDelete`` Operation
---------------------------------

*Topology & Inventory entities and relationships can be deleted.*

-  Operation ID: ``Ingestion``

Operation on Topology Inventory and Exposure input topic.

Message Topology DELETE ``ingestionDelete``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*Deletes components in topology.*

-  Message ID: ``delete``
-  Content type: application/json

DELETE Headers
^^^^^^^^^^^^^^

+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| Name           | Type   | Description                               | Value                    | Constraints     | Notes             |
+================+========+===========================================+==========================+=================+===================+
| (root)         | object | -                                         | -                        | -               | | **additional**  |
|                |        |                                           |                          |                 | | **properties**  |
|                |        |                                           |                          |                 | | **are allowed** |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_id          | string | Unique identifier for the event.          | -                        | -               | -                 |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_source      | string | Source of the CloudEvent.                 | -                        | | format        | -                 |
|                |        |                                           |                          | | (`uri`)       |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_type        | string | | Event type. It can be one of            | -                        | -               | -                 |
|                |        | | topology-inventory-ingestion.merge,     |                          |                 |                   |
|                |        | | topology-inventory-ingestion.delete, or |                          |                 |                   |
|                |        | | topology-inventory-ingestion.create.    |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| content-type   | string | | Content-type of the data contained      | | const                  | -               | -                 |
|                |        | | within the cloud event. It is           | | (`"application/json"`) |                 |                   |
|                |        | | application/json.                       |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_dataschema  | string | | URI representing the schema of the data | -                        | | format        | -                 |
|                |        | | This references the event-specific yang |                          | | (`uri`)       |                   |
|                |        | | schema.                                 |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_time        | string | Event timestamp.                          | -                        | | format        | -                 |
|                |        |                                           |                          | | (`date-time`) |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+
| ce_specversion | string | | The version of the CloudEvents          | const (`"1.0"`)          | -               | -                 |
|                |        | | specification which the event uses.     |                          |                 |                   |
+----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+

..

   Examples of headers *(generated)*

.. code:: json

   {
     "ce_specversion": "1.0",
     "ce_id": "a30e63c9-d29e-46ff-b99a-b63ed83fd235",
     "ce_source": "dmi-plugin:nm-1",
     "ce_type": "topology-inventory-ingestion.delete",
     "ce_time": "2023-06-12T09:05:00Z",
     "content-type": "application/json",
     "ce_dataschema": "topology-inventory-ingestion:events:delete:1.0.0"
   }

DELETE Payload
^^^^^^^^^^^^^^

+------------------------------------------------------+---------------+----------------------------------------------------------------+
| Name                                                 | Type          | Description                                                    |
+======================================================+===============+================================================================+
| (root)                                               | Object        | -                                                              |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| entities                                             | Array<Object> | | Entities are topology objects comprising of an id, consumer  |
|                                                      |               | | data, attributes and metadata for each. It contains the id   |
|                                                      |               | | only in case of delete cloud event.                          |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| | entities                                           | Object        | | Entities schema is adherent to the entity types and          |
| | .<module_name>                                     |               | | attributes mentioned in the yang modules. For yang modules,  |
| | :<mo_type>                                         |               | | see [Data Models][Data Models].                              |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| relationships                                        | Array<Object> | | Relationships comprising of an A-side and a B-side for each. |
|                                                      |               | | The A-side is considered the originating side of the         |
|                                                      |               | | relationship; the B-side is considered the terminating side  |
|                                                      |               | | of the relationship. The order of A-side and B-side is of    |
|                                                      |               | | importance and MUST NOT be changed once defined. It          |
|                                                      |               | | contains the id only in case of delete event.                |
+------------------------------------------------------+---------------+----------------------------------------------------------------+
| | relationships                                      | Object        | | Relationship schema is adherent to the relationship types    |
| | .<module_name>                                     |               | | mentioned in the yang modules. For yang modules,             |
| | :<relationship_type>                               |               | | see [Data Models][Data Models].                              |
+------------------------------------------------------+---------------+----------------------------------------------------------------+

..

   Examples of payload *(generated)*

.. code:: json

   {
     "data": {
       "entities": [
         {
           "o-ran-smo-teiv-equipment:AntennaModule": [
             {
               "id": "urn:oran:smo:teiv:AntennaModule=1",
               "sourceIds": [
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1",
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1,AntennaSubunit=1",
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=1,RetSubUnit=1"
               ]
             }
           ]
         },
         {
           "o-ran-smo-teiv-equipment:AntennaModule": [
             {
               "id": "urn:oran:smo:teiv:AntennaModule=2",
               "sourceIds": [
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2",
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2,AntennaSubunit=1",
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=2,RetSubUnit=1"
               ]
             }
           ]
         }
       ],
       "relationships": [
         {
           "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [
             {
               "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVs=",
               "sourceIds": [
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1",
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1,AntennaSubunit=1",
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=1,RetSubUnit=1",
                 "urn:oran:smo:teiv:Site=1"
               ]
             }
           ]
         },
         {
           "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [
             {
               "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVsYW5kLE1lQ2=",
               "sourceIds": [
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2",
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2,AntennaSubunit=1",
                 "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=2,RetSubUnit=1",
                 "urn:oran:smo:teiv:Site=2"
               ]
             }
           ]
         }
       ]
     }
   }