.. _arbitrator-API-resources-v2-configs:

``/v2/configs`` 
--------------------

The Configs API exists to replicate the browser's Lxtconfig portion of the User Interface (UI). A
knowledge of the UI will greatly aid in the understanding of the Config API.

There are several objects that may be configured via the API. As a general rule, the full set of GET,
POST, PUT, and DELETE calls are supported for all of the objects. JSON objects are used for the API
requests and response.

.. note::
   For security reasons, GET of the Credentials will not return the username/password associated
   with the credential.

Naming, ``object_id``
......................

While the objects contain their own attributes, they all share ``object_id``, where the ``object_id`` matches the
object type. The ``object_id`` is a Universally Unique IDentifier (UUID) that allows identification for API
invocations. Because the identifier is universal, it may be reused on POST calls to allow coordination
between different arbitrators. (This is useful for generalizing Probes, as well as the localhost Asset.)

The object_id may also be used to perform actions on a specific entry

``https:///api/v2/configs/asset_groups``

* Create asset_groups using a supplied array
* Retrieve all asset_groups
* Update asset_groups using a supplied array
* Delete asset_groups using a supplied array

  ``https:///api/v2/configs/asset_groups/object_id``
* Create a single named asset_group
* Retrieve a specific asset_group
* Update the specified asset_group
* Delete the specified asset_group


Relationships between object types
.....................................

In addition to the objects' attributes, the relationship between the objects can be seen via the presence
of arrays entries for the other objects. For example, an Asset Group will contain an array named
"assets" with 0..n entries for its children assets.

Generally speaking, the objects follow a parent-child relationship. The relationships are m:n, which
means the same object can share a parent or child object with its peer objects. For instance, the same
Probe Group can be used with multiple Assets.

::

   Configs
   Asset Group
   +> [Asset Group]
   -> Assets
   ---> Profiles
   -----> Credentials
   -----> Probe Groups
   -------> Probes
   Policy Modules
   -> Policy Filters
   -> Correlation Rules
   ---> Response Procedures
   -----> Response Methods+Details
   -------> Controls

When fetching data for a parent object, its children will be included. An entry for the parent object will
also be present, but only the parent's UUID will be supplied.

.. note::
   For large configurations, timeout restrictions may prevent fetching an entire object group.

Developer Hint: Performing a cut-paste-replace of an existing object is the fastest way to create a new
entry.
