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

.. _api_docs:


========
API-Docs
========

Descriptions of the APIs to the Non-RT RIC functions can be found in the repos for the functions.

See Also: Non-RT RIC Control Panel
==================================

The Non-RT RIC Control Panel provides a user interface that allows the user to interact with the Non-RT RIC.

Documentation for the Control Panel can be found here: `Non-RT RIC Control Panel <https://docs.o-ran-sc.org/projects/o-ran-sc-portal-nonrtric-controlpanel/en/latest/>`_.

It can be downloaded from here: ::

  git clone "https://gerrit.o-ran-sc.org/r/portal/nonrtric-controlpanel".

See Also: A1 / Near-RT RIC simulator
====================================

The Near-RT RIC simulator simulates an A1 protocol termination endpoint.

Documentation for the simulator can be found here: `A1 Interface Simulator <https://docs.o-ran-sc.org/projects/o-ran-sc-sim-a1-interface/en/latest/>`_.

It can be downloaded from here: ::

  git clone "https://gerrit.o-ran-sc.org/r/sim/a1-interface"
