.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved.

.. _release_notes:


=============
Release-Notes
=============

.. contents::
   :depth: 3
   :local:

This document provides the release notes for the release of the SMO Topology Exposure & Inventory (TEIV) service.


Version history TEIV
====================

+------------+----------+------------------+--------------------+
| **Date**   | **Ver.** | **Author**       | **Comment**        |
|            |          |                  |                    |
+------------+----------+------------------+--------------------+
| 2024-06-21 |  0.0.1   |  John Keeney     | J-Release          |
+------------+----------+------------------+--------------------+


Release Data
============

J-Release
---------
+------------------------------+---------------------------------------------------+
| **Project**                  | SMO TEIV                                          |
+------------------------------+---------------------------------------------------+
| **Repo/commit-ID**           | smo-teiv/3b8a84a5cb9cb6ec5a3f4a8ca038431769bced84 |
+------------------------------+---------------------------------------------------+
| **Release designation**      | J-Release                                         |
+------------------------------+---------------------------------------------------+
| **Release date**             | 2024-06-21                                        |
+------------------------------+---------------------------------------------------+
|| **Purpose of the delivery** || o-ran-sc/smo-teiv-exposure:0.0.1                 |
||                             || o-ran-sc/smo-teiv-ingestion:0.0.1                |
||                             || First release                                    |
+------------------------------+---------------------------------------------------+