.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 AT&T Intellectual Property.  All rights reserved.


ONAP Portal
===========
The ONAP Portal integrates different ONAP applications in one place.
The Portal platform provides common management services and
connectivity, while the applications run separately.

From the Portal, users access applications. Administrators
onboard and manage applications and widgets, and manage user access.

The Portal SDK for application developers includes bundled tools,
technologies, and built-in capabilities such as services, APIs,
and UI controls. Existing applications can migrate to the Portal
with the provided APIs and libraries.
See Portal SDK_.

:ref:`docs tutorials portal-sdk <onap-portal:master_index>`

Access the ONAP Portal
----------------------

Access the ONAP Portal using a browser such as Mozilla Firefox or
Google Chrome. The URL is dependent on a specific ONAP platform
deployment.

From the Portal, users access applications directly or by
function using the Manage menu.

.. figure:: onap-portal-home.png
   :width: 900 px
   :height: 600 px


Roles in the ONAP Portal
------------------------
The Portal displays different menus for the following roles:

* User

* Portal Administrator

* Application Administrator

* Governor

* Operator

Each application also defines a distinct set of user roles.
See Users.

See also
--------

* `Applications in the Portal <https://wiki.onap.org/x/h4sP>`_
