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

.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING
.. _offeredapis:


Policy Offered APIs
===================

The Policy Framework supports the public APIs listed in the links below:

.. toctree::
   :maxdepth: 1

   api/api
   pap/pap
   xacml/decision-api

.. warning:: The :ref:`Legacy APIs  <legacyapis-label>` are scheduled to be deprecated after the Frankfurt release!

-    :ref:`Legacy APIs <legacyapis-label>`  (To be DEPRECATED)

Postman Environment for API Testing
-----------------------------------

The following environment file from postman can be used for testing API's. All you need to do is fill in the IP and Port information for the installation that you have created.

:download:`link <PolicyAPI.postman_environment.json>`

Postman Collection for API Testing
----------------------------------

The following collection can be used in Postman to assist in testing the Policy APIs.

:download:`link <PolicyAPI.postman_collection.json>`
