.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0


Offered APIs
============
The Policy subsystem of ONAP maintains, distributes, and operates on the set of rules that underlie ONAP’s control, orchestration, and management functions. Policy provides a centralized environment for the creation and management of easily-updatable conditional rules. It enables users to validate policies and rules, identify and resolve overlaps and conflicts, and derive additional policies where needed.  The following operations are supported by the policy API:

* Create policies on the PAP 
* Update policies on the PAP
* Delete policies on the PAP or PDP
* Push policies from the PAP to the PDP
* List policies on the PDP
* Get config data of policies on the PDP
* Create Dictionary Items
* Update Dictionary Items
* Retrieve Dictionary Items
* Import Micro Services Models
* Retrieve Metrics for policy counts from PDP and PAP


POLICY Engine Services
^^^^^^^^^^^^^^^^^^^^^^

The figure below represents the target POLICY Architecture.

.. image:: https://wiki.onap.org/download/attachments/1015898/PolicyEngineApiList.png?api=v2



POLICY API Details
^^^^^^^^^^^^^^^^^^

.. SStodo Check with Pam about if using onap wiki urls are okay.  

.. swaggerv2doc:: https://wiki.onap.org/download/attachments/1015898/api-docs-09192017.json?api=v2



Additional information can be found at `PolicyApi link`_.

.. _PolicyApi link: https://wiki.onap.org/display/DW/Policy+API





End of document

