.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright (C) 2022 Nordix

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


This document provides the release notes for the Non-RT RIC Service Management & Exposure (SME).

Version history capifcore
=========================

+------------+----------+------------------+-----------------+
| **Date**   | **Ver.** | **Author**       | **Comment**     |
|            |          |                  |                 |
+------------+----------+------------------+-----------------+
| 2022-12-14 | 1.0.0    | Henrik Andersson | G Release       |
|            |          |                  | Initial version |
|            |          |                  | of capifcore    |
+------------+----------+------------------+-----------------+
| 2023-02-10 | 1.0.1    | Yennifer Chacon  | G Maintenance   |
|            |          |                  | Release         |
+------------+----------+------------------+-----------------+

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

G Release
---------
+-----------------------------+---------------------------------------------------+
| **Project**                 | Non-RT RIC CAPIF Core                             |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+
| **Repo/commit-ID**          | nonrtric/plt/sme/                                 |
|                             | 487e239542f74384f6557a5001411da56503e7bb          |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+
| **Release designation**     | G release                                         |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+
| **Release date**            | 2022-12-14                                        |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+
| **Purpose of the delivery** | Introduction of capifcore                         |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+

G Maintenance
-------------
+-----------------------------+---------------------------------------------------+
| **Project**                 | Non-RT RIC CAPIF Core                             |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+
| **Repo/commit-ID**          | nonrtric/plt/sme/                                 |
|                             | b4cee94bd251b0bb92fc435fbe74ea1079d43356          |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+
| **Release designation**     | G release                                         |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+
| **Release date**            | 2023-02-10                                        |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+
| **Purpose of the delivery** | Refactor and improvements of capifcore            |
|                             |                                                   |
+-----------------------------+---------------------------------------------------+