   Copyright (c) 2019 AT&T Intellectual Property.

   Copyright (c) 2019 Nokia.


   Licensed under the Creative Commons Attribution 4.0 International

   Public License (the "License"); you may not use this file except

   in compliance with the License. You may obtain a copy of the License at


       https://creativecommons.org/licenses/by/4.0/


   Unless required by applicable law or agreed to in writing, documentation

   distributed under the License is distributed on an "AS IS" BASIS,

   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

   See the License for the specific language governing permissions and

   limitations under the License.

   This source code is part of the near-RT RIC (RAN Intelligent Controller) platform project (RICP).

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


This document provides the release notes for v0.0.22 of xapp-frame.

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


Version history
---------------

+--------------------+--------------------+--------------------+--------------------+
| **Date**           | **Ver.**           | **Author**         | **Comment**        |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
| 2019-11-21         | 0.0.22             | Abukar Mohamed     | Latest version     |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+


Summary
-------

This is the first release of this package.



Release Data
------------

+--------------------------------------+--------------------------------------+
| **Project**                          | xApp-frame                           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Repo/commit-ID**                   | ric-plt/xapp-frame                   |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release designation**              | Amber                                |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release date**                     | 2019-11-21                           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Purpose of the delivery**          | First Release                        |
|                                      |                                      |
+--------------------------------------+--------------------------------------+

Feature Additions
^^^^^^^^^^^^^^^^^

Bug Corrections
^^^^^^^^^^^^^^^

Deliverables
^^^^^^^^^^^^

Software Deliverables
+++++++++++++++++++++

This version provides Golang package for xapp-frame
It can be retrieved from https://gerrit.o-ran-sc.org/r/ric-plt/xapp-frame.



Documentation Deliverables
++++++++++++++++++++++++++




Known Limitations, Issues and Workarounds
-----------------------------------------

System Limitations
^^^^^^^^^^^^^^^^^^



Known Issues
^^^^^^^^^^^^

Workarounds
^^^^^^^^^^^





References
----------


