Search and Search Result Export 
-------------------------------

For an API call that carries out a search, a POST payload in JSON format is added.

.. tabularcolumns:: |p{1.5cm}|p{1cm}|p{3cm}|p{5cm}|p{5cm}|

+-----------+-------+--------------------------+-------------------------+--------------------------------------+
| Task      | Call  | URL                      | Parameters              | Payload                              |
+===========+=======+==========================+=========================+======================================+
| Search    | POST  | /api/tool/Search/        | format=json             | {"query":"[query]"}                  |
|           |       |                          |                         |                                      |
|           |       |                          | hierarchy=[hierarchy]   |                                      |
+-----------+-------+--------------------------+-------------------------+--------------------------------------+

The value of ``[query]`` follows Search syntax, for example:

::

   {"query":"data/Countries with country_name contains King"}

While the default search direction is down, a second parameter can be added
to ``[query]`` to indicate the hierarchy direction
to search. These are enabled by adding a value ``true``:

* ``hierarchy_paths`` - up the hierarchy
* ``hierarchy_shallow`` - at the local hierarchy
* ``hierarchy_all`` - up and down the hierarchy

For example, if the user making the API call is at ``sys.hcs``, then
a call payload like:

::

   {"query":"relation/Bundle with name is 'HcsBase' ", "hierarchy_paths":true}

will also search up the hierarchy path.

The parameter ``filter_hierarchy`` can also be used to filter the hierarchy of search results.
Specifying a hierarchy to which the user has no access will return a Permission Denied error.

.. note::

   * If for both ``hierarchy=sys.hcs`` and ``filter_hierarchy=sys.hcs.CSP`` for example are used, then
     ``filter_hierarchy=sys.hcs.CSP`` takes precedence.
   * If for neither ``hierarchy=sys.hcs`` nor ``filter_hierarchy=sys.hcs.CSP`` for example are used, then
     the user's hierarchy is applied.

The Request payload can also be a GET parameter, for example:

.. tabularcolumns:: |p{1.5cm}|p{1cm}|p{3cm}|p{5cm}|p{5cm}|

+--------+------+-------------------+------------------------------+-----------------------------------+
| Task   | Call | URL               | Parameters                   | Response                          |
+========+======+===================+==============================+===================================+
| Search | GET  | /api/tool/Search/ | format=json                  | JSON format of the search result. |
|        |      |                   |                              |                                   |
|        |      |                   | hierarchy=[hierarchy]        |                                   |
|        |      |                   |                              |                                   |
|        |      |                   | filter_hierarchy=[hierarchy] |                                   |
|        |      |                   |                              |                                   |
|        |      |                   | query=[url_query]            |                                   |
+--------+------+-------------------+------------------------------+-----------------------------------+

The value of ``[url_query]`` is URL encoded string, for example:

::

   data/Countries%20with%20country_name%20contains%20King


Furthermore, the ``meta`` property of the schema in the response to ``/api/tool/Search/``    
contains action details for the export of search results.
This includes the URL for the data export POST request:

::

   /api/export/export_data/?url=/api/tool/Search/

as well as the URL:

::

   /api/view/ExportData/add
   
which has a schema that lists the data export data type choices
that will be used as a parameter to the POST call.




.. |VOSS-4-UC| replace:: VOSS-4-UC
.. |Unified CM| replace:: Unified CM