.. 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.

.. index:: Developer Guides

.. _doc_onap-developer_guide_projects:

ONAP components and functionalities
===================================
Additional developer level detail is provided for each project below.

Active and Available Inventory
------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/aai/aai-common.git/docs/index
   AAI-esr-gui <../../../submodules/aai/esr-gui.git/docs/index>
   ../../../submodules/aai/esr-server.git/docs/index
   ../../../submodules/aai/sparky-be.git/docs/index
   ../../../submodules/aai/event-client.git/docs/index.rst


Application Controller
----------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/appc/deployment.git/docs/index
   ../../../submodules/appc.git/docs/index

Application Authorization Framework
-----------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/aaf/authz.git/docs/index
   Secret Management Service <../../../submodules/aaf/sms.git/docs/index>

Command Line Interface
----------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/cli.git/docs/index


Control Loop Automation Management Platform
-------------------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/clamp.git/docs/index

Common Controller Software Development Kit
------------------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/ccsdk/distribution.git/docs/index
   ../../../submodules/ccsdk/dashboard.git/docs/index
   ../../../submodules/ccsdk/platform/plugins.git/docs/index
   ../../../submodules/ccsdk/apps.git/docs/index
   ../../../submodules/ccsdk/cds.git/docs/index

.. Being consolidated in ccsdk distribution
   ../../../submodules/ccsdk/platform/blueprints.git/docs/index
   ../../../submodules/ccsdk/platform/nbapi.git/docs/index
   ../../../submodules/ccsdk/storage/esaas.git/docs/index
   ../../../submodules/ccsdk/storage/pgaas.git/docs/index
   ../../../submodules/ccsdk/sli/adaptors.git/docs/index
   ../../../submodules/ccsdk/sli/core.git/docs/index
   ../../../submodules/ccsdk/sli/northbound.git/docs/index
   ../../../submodules/ccsdk/sli/plugins.git/docs/index

Data Collection, Analysis, and Events
-------------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/dcaegen2.git/docs/index

Data Management as a Platform Data Bus Controller
-------------------------------------------------

.. toctree::
   :maxdepth: 1
   :titlesonly:

   ../../../submodules/dmaap/dbcapi.git/docs/index
   ../../../submodules/dmaap/buscontroller.git/docs/index

Data Management as a Platform Data Router
-----------------------------------------

.. toctree::
   :maxdepth: 1
   :titlesonly:

   ../../../submodules/dmaap/datarouter.git/docs/index

Data Management as a Platform Message Router
--------------------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/dmaap/messagerouter/messageservice.git/docs/index

Development Tools
-----------------

.. toctree::
   :maxdepth: 1
   :titlesonly:

   ../../../submodules/integration/devtool.git/docs/source/index


External API Framework
----------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/externalapi/nbi.git/docs/index


Holmes
------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   Alarm Correlation and Analysis <../../../submodules/holmes/engine-management.git/docs/index>
   Architecture and APIs <../../../submodules/holmes/rule-management.git/docs/index>

Integration
-----------

.. toctree::
   :maxdepth: 1
   :titlesonly:

   ../../../submodules/integration.git/docs/index

Logging Analytics
-----------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/logging-analytics.git/docs/index

Micro Services Bus
------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/msb/apigateway.git/docs/index
   ../../../submodules/msb/swagger-sdk.git/docs/index

.. Empty folders in this release
   ../../../submodules/msb/discovery.git/docs/index
   ../../../submodules/msb/java-sdk.git/docs/index


Modeling
--------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/modeling/modelspec.git/docs/index
   ../../../submodules/modeling/toscaparsers.git/docs/index

MultiVIM Cloud
--------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/multicloud/framework.git/docs/index

Music
-----

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/music.git/docs/index
   ../../../submodules/music/distributed-kv-store.git/docs/index

ONAP Operations Manager
-----------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/oom.git/docs/index

Optimization Framework
----------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/optf/has.git/docs/index
   ../../../submodules/optf/osdf.git/docs/index
   ../../../submodules/optf/cmso.git/docs/index

Policy Framework
----------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/policy/parent.git/docs/index
   ../../../submodules/policy/engine.git/docs/index

Portal Platform
---------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/portal.git/docs/index

Service Design & Creation
-------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/sdc.git/docs/index

.. Empty folders for this release
   ../../../submodules/sdc/jtosca.git/docs/index
   ../../../submodules/sdc/sdc-distribution-client.git/docs/index
   ../../../submodules/sdc/sdc-docker-base.git/docs/index
   ../../../submodules/sdc/sdc-titan-cassandra.git/docs/index
   ../../../submodules/sdc/sdc-tosca.git/docs/index
   ../../../submodules/sdc/sdc-workflow-designer.git/docs/index

Service Orchestration
---------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/so.git/docs/index
   ../../../submodules/so/libs.git/docs/index

Software Defined Network Controller
-----------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/sdnc/oam.git/docs/index

.. Empty folders for this release
   ../../../submodules/sdnc/adaptors.git/docs/index
   ../../../submodules/sdnc/architecture.git/docs/index
   ../../../submodules/sdnc/core.git/docs/index
   ../../../submodules/sdnc/features.git/docs/index
   ../../../submodules/sdnc/northbound.git/docs/index
   ../../../submodules/sdnc/parent.git/docs/index
   ../../../submodules/sdnc/plugins.git/docs/index

Software Defined Network Controller for Radio (SDN-R)
-----------------------------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/ccsdk/features.git/docs/index

Use Case User Interface
-----------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/usecase-ui.git/docs/index

Virtual Function Controller
---------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/vfc/nfvo/lcm.git/docs/index

Virtual Infrastructure Deployment
---------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:


   ../../../submodules/vid.git/docs/index

.. Empty folders for this release
   ../../../submodules/vid/asdcclient.git/docs/index

VNF Software Development Kit
----------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/vnfsdk/model.git/docs/index
