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

=============
Offered API’s
=============

:Date:   2017-10-23

.. contents::
   :depth: 4
..

Overview
========

Version information
-------------------

*Version* : 1.0.0

URI scheme
----------

*Host* : localhost:8080 *BasePath* : /sdc2/rest *Schemes* : HTTP

Tags
----

-  Additional Information Servlet

-  BE Monitoring

-  Catalog Types Upload

-  Component Servlet

-  Consumer Servlet

-  Distribution Service Servlet

-  Element Servlet

-  Input Catalog

-  Lifecycle Actions Servlet

-  Product Catalog

-  Resource Artifact Servlet

-  Resource Attribute Servlet

-  Resource Group Servlet

-  Resource Instance Servlet

-  Resource Property Servlet

-  Resources Catalog

-  Resources Catalog Upload

-  Service Catalog

-  Types Fetch Servlet

-  User Administration

Paths
=====

return aggregate BE health check of Titan, ES and BE
----------------------------------------------------

::

    GET /healthCheck

Description
~~~~~~~~~~~

return BE health check

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Titan, ES and BE are all up                        | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | One or more BE components (Titan, ES, BE) are down | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  BE Monitoring

POST /monitoring
----------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Body**         | **body**\ *optional*     | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **defau | successful operation                               | No Content     |
| lt**    |                                                    |                |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  BE Monitoring

Retrieve all artifactTypes
--------------------------

::

    GET /v1/artifactTypes

Description
~~~~~~~~~~~

Retrieve all artifactTypes

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns artifactTypes Ok                           | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | No artifactTypes were found                        | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

get component audit records
---------------------------

::

    GET /v1/catalog/audit-records/{componentType}/{componentUniqueId}

Description
~~~~~~~~~~~

get audit records for a service or a resource

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentUniqueId**\ * | string                           |
|                  | required*                |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service found                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

Get data types
--------------

::

    GET /v1/catalog/dataTypes

Description
~~~~~~~~~~~

Returns data types

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | datatypes                                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Data types not found                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Types Fetch Servlet

Create product
--------------

::

    POST /v1/catalog/products

Description
~~~~~~~~~~~

Returns created product

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | USER\_ID of product strategist user  | string           |
| **       | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Product object to be created         | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | successful operation                               | `Product <#_pr |
|         |                                                    | oduct>`__      |
+---------+----------------------------------------------------+----------------+
| **201** | Product created                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid/missing content                            | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation / Empty USER\_ID header       | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Product already exists / User not found / Wrong    | No Content     |
|         | user role                                          |                |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Product Catalog

Retrieve Service
----------------

::

    GET /v1/catalog/products/productName/{productName}/productVersion/{productVersion}

Description
~~~~~~~~~~~

Returns product according to name and version

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **productName**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **productVersion**\ *req | string                           |
|                  | uired*                   |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Product found                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Product not found                                  | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Product Catalog

validate product name
---------------------

::

    GET /v1/catalog/products/validate-name/{productName}

Description
~~~~~~~~~~~

checks if the chosen product name is available

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **productName**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service found                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Product Catalog

Retrieve product
----------------

::

    GET /v1/catalog/products/{productId}

Description
~~~~~~~~~~~

Returns product according to productId

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **productId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Product found                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Missing information                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Product not found                                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Product Catalog

DELETE /v1/catalog/products/{productid}
---------------------------------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **productId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **defau | successful operation                               | No Content     |
| lt**    |                                                    |                |
+---------+----------------------------------------------------+----------------+

Tags
~~~~

-  Product Catalog

Update Product Metadata
-----------------------

::

    PUT /v1/catalog/products/{productId}/metadata

Description
~~~~~~~~~~~

Returns updated product

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **productId |                                      | string           |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Product object to be Updated         | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Product Updated                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Product Catalog

Create Resource
---------------

::

    POST /v1/catalog/resources

Description
~~~~~~~~~~~

Returns created resource

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Resource object to be created        | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | successful operation                               | `Resource <#_r |
|         |                                                    | esource>`__    |
+---------+----------------------------------------------------+----------------+
| **201** | Resource created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Resource already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog

GET /v1/catalog/resources/certified/abstract
--------------------------------------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **defau | successful operation                               | No Content     |
| lt**    |                                                    |                |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog

GET /v1/catalog/resources/certified/notabstract
-----------------------------------------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **defau | successful operation                               | No Content     |
| lt**    |                                                    |                |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog

Create Resource
---------------

::

    POST /v1/catalog/resources/csar/{csaruuid}

Description
~~~~~~~~~~~

Returns resource created from csar uuid

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **csaruuid**\ *required* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | successful operation                               | `Resource <#_r |
|         |                                                    | esource>`__    |
+---------+----------------------------------------------------+----------------+
| **201** | Resource retrieced                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog

Retrieve Resource by name and version
-------------------------------------

::

    GET /v1/catalog/resources/resourceName/{resourceName}/resourceVersion/{resourceVersion}

Description
~~~~~~~~~~~

Returns resource according to resourceId

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **resourceName**\ *requi | string                           |
|                  | red*                     |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **resourceVersion**\ *re | string                           |
|                  | quired*                  |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Resource not found                                 | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog

validate resource name
----------------------

::

    GET /v1/catalog/resources/validate-name/{resourceName}

Description
~~~~~~~~~~~

checks if the chosen resource name is available

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **resourceName**\ *requi | string                           |
|                  | red*                     |                                  |
+------------------+--------------------------+----------------------------------+
| **Query**        | **subtype**\ *optional*  | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog

Retrieve Resource
-----------------

::

    GET /v1/catalog/resources/{resourceId}

Description
~~~~~~~~~~~

Returns resource according to resourceId

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **resourceId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Resource not found                                 | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog

Update Resource
---------------

::

    PUT /v1/catalog/resources/{resourceId}

Description
~~~~~~~~~~~

Returns updated resource

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Resource object to be updated        | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource updated                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Resource already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog

DELETE /v1/catalog/resources/{resourceid}
-----------------------------------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **resourceId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **defau | successful operation                               | No Content     |
| lt**    |                                                    |                |
+---------+----------------------------------------------------+----------------+

Tags
~~~~

-  Resources Catalog

Create Additional Information Label and Value
---------------------------------------------

::

    POST /v1/catalog/resources/{resourceId}/additionalinfo

Description
~~~~~~~~~~~

Returns created Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id to update with new       | string           |
|          | d**\ *requi | property                             |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Additional information key value to  | string           |
|          | required*   | be created                           |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Additional information created                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Get all Additional Information under resource
---------------------------------------------

::

    GET /v1/catalog/resources/{resourceId}/additionalinfo

Description
~~~~~~~~~~~

Returns Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id to update with new       | string           |
|          | d**\ *requi | property                             |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | list of additional information                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Get Additional Information by id
--------------------------------

::

    GET /v1/catalog/resources/{resourceId}/additionalinfo/{labelId}

Description
~~~~~~~~~~~

Returns Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **labelId** | label id                             | string           |
|          | \ *required |                                      |                  |
|          | *           |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id to update with new       | string           |
|          | d**\ *requi | property                             |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | fetched additional information                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Update Additional Information Label and Value
---------------------------------------------

::

    PUT /v1/catalog/resources/{resourceId}/additionalinfo/{labelId}

Description
~~~~~~~~~~~

Returns updated Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **labelId** | label id                             | string           |
|          | \ *required |                                      |                  |
|          | *           |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id to update with new       | string           |
|          | d**\ *requi | property                             |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Additional information key value to  | string           |
|          | required*   | be created                           |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Additional information updated                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Create Additional Information Label and Value
---------------------------------------------

::

    DELETE /v1/catalog/resources/{resourceId}/additionalinfo/{labelId}

Description
~~~~~~~~~~~

Returns deleted Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **labelId** | label id                             | string           |
|          | \ *required |                                      |                  |
|          | *           |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id to update with new       | string           |
|          | d**\ *requi | property                             |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Additional information deleted                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Create Artifact
---------------

::

    POST /v1/catalog/resources/{resourceId}/artifacts

Description
~~~~~~~~~~~

Returns created ArtifactDefinition

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **resourceI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Artifact already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Update Artifact
---------------

::

    POST /v1/catalog/resources/{resourceId}/artifacts/{artifactId}

Description
~~~~~~~~~~~

Returns updated artifact

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **artifactI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Download resource Artifact in Base64
------------------------------------

::

    GET /v1/catalog/resources/{resourceId}/artifacts/{artifactId}

Description
~~~~~~~~~~~

Returns downloaded artifact

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **artifactId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **resourceId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource artifact downloaded                       | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Resource/Artifact not found                        | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Delete Artifact
---------------

::

    DELETE /v1/catalog/resources/{resourceId}/artifacts/{artifactId}

Description
~~~~~~~~~~~

Returns delete artifact

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **artifactId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **resourceId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Create Resource Attribute
-------------------------

::

    POST /v1/catalog/resources/{resourceId}/attributes

Description
~~~~~~~~~~~

Returns created resource attribute

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id to update with new       | string           |
|          | d**\ *requi | attribute                            |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Resource attribute to be created     | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource property created                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Resource attribute already exist                   | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Attribute Servlet

Update Resource Attribute
-------------------------

::

    PUT /v1/catalog/resources/{resourceId}/attributes/{attributeId}

Description
~~~~~~~~~~~

Returns updated attribute

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **attribute | attribute id to update               | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id to update with new       | string           |
|          | d**\ *requi | attribute                            |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Resource attribute to update         | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource attribute updated                         | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Attribute Servlet

Create Resource Attribute
-------------------------

::

    DELETE /v1/catalog/resources/{resourceId}/attributes/{attributeId}

Description
~~~~~~~~~~~

Returns deleted attribute

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **attribute | Attribute id to delete               | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id of attribute             | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **204** | deleted attribute                                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Resource property not found                        | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Attribute Servlet

Update Resource Metadata
------------------------

::

    PUT /v1/catalog/resources/{resourceId}/metadata

Description
~~~~~~~~~~~

Returns updated resource metadata

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Resource metadata to be updated      | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource metadata updated                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog

Create Resource Property
------------------------

::

    POST /v1/catalog/resources/{resourceId}/properties

Description
~~~~~~~~~~~

Returns created resource property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id to update with new       | string           |
|          | d**\ *requi | property                             |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Resource property to be created      | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource property created                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Resource property already exist                    | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Property Servlet

Create Resource Property
------------------------

::

    GET /v1/catalog/resources/{resourceId}/properties/{propertyId}

Description
~~~~~~~~~~~

Returns property of resource

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **propertyI | proerty id to get                    | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id of property              | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | property                                           | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Resource property not found                        | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Property Servlet

Update Resource Property
------------------------

::

    PUT /v1/catalog/resources/{resourceId}/properties/{propertyId}

Description
~~~~~~~~~~~

Returns updated property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **propertyI | proerty id to update                 | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id to update with new       | string           |
|          | d**\ *requi | property                             |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Resource property to update          | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource property updated                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Property Servlet

Create Resource Property
------------------------

::

    DELETE /v1/catalog/resources/{resourceId}/properties/{propertyId}

Description
~~~~~~~~~~~

Returns deleted property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **propertyI | Property id to delete                | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI | resource id of property              | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **204** | deleted property                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Resource property not found                        | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Property Servlet

Create Artifact and Attach to interface
---------------------------------------

::

    POST /v1/catalog/resources/{resourceId}/{interfaceType}/{operation}/artifacts

Description
~~~~~~~~~~~

Returns created resource

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **Content-M |                                      | string           |
| **       | D5**\ *opti |                                      |                  |
|          | onal*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **interface |                                      | string           |
|          | Type**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **operation |                                      | string           |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Artifact already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

update Artifact Attach to interface
-----------------------------------

::

    POST /v1/catalog/resources/{resourceId}/{interfaceType}/{operation}/artifacts/{artifactId}

Description
~~~~~~~~~~~

updates artifact by interface

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **Content-M |                                      | string           |
| **       | D5**\ *opti |                                      |                  |
|          | onal*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **artifactI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **interface |                                      | string           |
|          | Type**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **operation |                                      | string           |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | delete artifact under interface deleted            | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Artifact already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

delete Artifact from interface
------------------------------

::

    DELETE /v1/catalog/resources/{resourceId}/{interfaceType}/{operation}/artifacts/{artifactId}

Description
~~~~~~~~~~~

delete matching artifact from interface

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **artifactId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **interfaceType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **operation**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **resourceId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | delete artifact under interface deleted            | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Artifact already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

DELETE /v1/catalog/resources/{resourcename}/{version}
-----------------------------------------------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **resourceName**\ *requi | string                           |
|                  | red*                     |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **version**\ *required*  | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **defau | successful operation                               | No Content     |
| lt**    |                                                    |                |
+---------+----------------------------------------------------+----------------+

Tags
~~~~

-  Resources Catalog

Create Service
--------------

::

    POST /v1/catalog/services

Description
~~~~~~~~~~~

Returns created service

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Service object to be created         | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | successful operation                               | `Service <#_se |
|         |                                                    | rvice>`__      |
+---------+----------------------------------------------------+----------------+
| **201** | Service created                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Service already exist                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

Retrieve Distributions
----------------------

::

    GET /v1/catalog/services/distribution/{did}

Description
~~~~~~~~~~~

Return the list of distribution status objects

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **did**\ *required*      | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service found                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Status not found                                   | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Distribution Service Servlet

Retrieve Service
----------------

::

    GET /v1/catalog/services/serviceName/{serviceName}/serviceVersion/{serviceVersion}

Description
~~~~~~~~~~~

Returns service according to name and version

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceName**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceVersion**\ *req | string                           |
|                  | uired*                   |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service found                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Service not found                                  | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

Download service artifact
-------------------------

::

    GET /v1/catalog/services/toscatoheat/{artifactName}

Description
~~~~~~~~~~~

Returns downloaded artifact

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **artifactName**\ *requi | string                           |
|                  | red*                     |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Artifact downloaded                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **401** | Authorization required                             | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Artifact not found                                 | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/octet-stream``

Tags
~~~~

-  Service Catalog

validate service name
---------------------

::

    GET /v1/catalog/services/validate-name/{serviceName}

Description
~~~~~~~~~~~

checks if the chosen service name is available

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceName**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service found                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

Get Inputs only
---------------

::

    GET /v1/catalog/services/{componentId}/inputs

Description
~~~~~~~~~~~

Returns Inputs list

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Query**        | **amount**\ *optional*   | integer (int32)                  |
+------------------+--------------------------+----------------------------------+
| **Query**        | **fromId**\ *optional*   | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Input Catalog

Retrieve Service
----------------

::

    GET /v1/catalog/services/{serviceId}

Description
~~~~~~~~~~~

Returns service according to serviceId

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service found                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Service not found                                  | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

DELETE /v1/catalog/services/{serviceid}
---------------------------------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **serviceId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **defau | successful operation                               | No Content     |
| lt**    |                                                    |                |
+---------+----------------------------------------------------+----------------+

Tags
~~~~

-  Service Catalog

Create Additional Information Label and Value
---------------------------------------------

::

    POST /v1/catalog/services/{serviceId}/additionalinfo

Description
~~~~~~~~~~~

Returns created Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId | service id to update with new        | string           |
|          | **\ *requir | property                             |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Additional information key value to  | string           |
|          | required*   | be created                           |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Additional information created                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Get all Additional Information under service
--------------------------------------------

::

    GET /v1/catalog/services/{serviceId}/additionalinfo

Description
~~~~~~~~~~~

Returns Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId | service id to update with new        | string           |
|          | **\ *requir | property                             |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | list of additional information                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Get Additional Information by id
--------------------------------

::

    GET /v1/catalog/services/{serviceId}/additionalinfo/{labelId}

Description
~~~~~~~~~~~

Returns Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **labelId** | label id                             | string           |
|          | \ *required |                                      |                  |
|          | *           |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId | service id to update with new        | string           |
|          | **\ *requir | property                             |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | fetched additional information                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Update Additional Information Label and Value
---------------------------------------------

::

    PUT /v1/catalog/services/{serviceId}/additionalinfo/{labelId}

Description
~~~~~~~~~~~

Returns updated Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **labelId** | label id                             | string           |
|          | \ *required |                                      |                  |
|          | *           |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId | service id to update with new        | string           |
|          | **\ *requir | property                             |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Additional information key value to  | string           |
|          | required*   | be created                           |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Additional information updated                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Create Additional Information Label and Value
---------------------------------------------

::

    DELETE /v1/catalog/services/{serviceId}/additionalinfo/{labelId}

Description
~~~~~~~~~~~

Returns deleted Additional Inforamtion property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **labelId** | label id                             | string           |
|          | \ *required |                                      |                  |
|          | *           |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId | service id to update with new        | string           |
|          | **\ *requir | property                             |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Additional information deleted                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Additional information key already exist           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Additional Information Servlet

Create Artifact
---------------

::

    POST /v1/catalog/services/{serviceId}/artifacts

Description
~~~~~~~~~~~

Returns created ArtifactDefinition

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **serviceId |                                      | string           |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Artifact already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Update Api Artifact
-------------------

::

    POST /v1/catalog/services/{serviceId}/artifacts/api/{artifactId}

Description
~~~~~~~~~~~

Returns created ArtifactDefinition

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **Content-M |                                      | string           |
| **       | D5**\ *opti |                                      |                  |
|          | onal*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **artifactI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId |                                      | string           |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Api Artifact Updated                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Delete Api Artifact
-------------------

::

    DELETE /v1/catalog/services/{serviceId}/artifacts/api/{artifactId}

Description
~~~~~~~~~~~

Returns Deleted ArtifactDefinition

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **Content-MD5**\ *option | string                           |
|                  | al*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **artifactId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **204** | Api Artifact deleted                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Update Artifact
---------------

::

    POST /v1/catalog/services/{serviceId}/artifacts/{artifactId}

Description
~~~~~~~~~~~

Returns updated artifact

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **artifactI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId |                                      | string           |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Service artifact created                           | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Download service Artifact in Base64
-----------------------------------

::

    GET /v1/catalog/services/{serviceId}/artifacts/{artifactId}

Description
~~~~~~~~~~~

Returns downloaded artifact

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **artifactId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service artifact downloaded                        | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Service/Artifact not found                         | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Delete Artifact
---------------

::

    DELETE /v1/catalog/services/{serviceId}/artifacts/{artifactId}

Description
~~~~~~~~~~~

Returns delete artifact

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **artifactId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Service artifact deleted                           | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Update Service Distribution State
---------------------------------

::

    POST /v1/catalog/services/{serviceId}/distribution-state/{state}

Description
~~~~~~~~~~~

service with the changed distribution status

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId |                                      | string           |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **state**\  |                                      | enum (approve,   |
|          | *required*  |                                      | reject)          |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | DistributionChangeInfo - get comment | `LifecycleChange |
|          | required*   | out of body                          | InfoWithAction < |
|          |             |                                      | #_lifecyclechang |
|          |             |                                      | einfowithaction> |
|          |             |                                      | `__              |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service distribution state changed                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Service is not available for distribution          | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Requested service was not found                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error. Please try again later.     | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

Mark distribution as deployed
-----------------------------

::

    POST /v1/catalog/services/{serviceId}/distribution/{did}/markDeployed

Description
~~~~~~~~~~~

relevant audit record will be created

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **did**\ *required*      | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service was marked as deployed                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Service is not available                           | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Requested service was not found                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error. Please try again later.     | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

Activate distribution
---------------------

::

    POST /v1/catalog/services/{serviceId}/distribution/{env}/activate

Description
~~~~~~~~~~~

activate distribution

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **env**\ *required*      | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | OK                                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Requested service was not found                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Service cannot be distributed due to missing       | No Content     |
|         | deployment artifacts                               |                |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error. Please try again later.     | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

Update Service Metadata
-----------------------

::

    PUT /v1/catalog/services/{serviceId}/metadata

Description
~~~~~~~~~~~

Returns updated service

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId |                                      | string           |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Service object to be Updated         | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service Updated                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

POST /v1/catalog/services/{serviceid}/tempUrlToBeDeleted
--------------------------------------------------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceId**\ *required | string                           |
|                  | *                        |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | OK                                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error. Please try again later.     | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

DELETE /v1/catalog/services/{servicename}/{version}
---------------------------------------------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **serviceName**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **version**\ *required*  | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **defau | successful operation                               | No Content     |
| lt**    |                                                    |                |
+---------+----------------------------------------------------+----------------+

Tags
~~~~

-  Service Catalog

Retrieve Distributions
----------------------

::

    GET /v1/catalog/services/{serviceUUID}/distribution

Description
~~~~~~~~~~~

Returns list bases on the information extracted from Auditing Records
according to service uuid

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **serviceUUID**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Service found                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Service not found                                  | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Distribution Service Servlet

Create Resource from yaml
-------------------------

::

    POST /v1/catalog/upload/{resourceAuthority}

Description
~~~~~~~~~~~

Returns created resource

Parameters
~~~~~~~~~~

+---------+------------+----------------------------------+----------------+---------+
| Type    | Name       | Description                      | Schema         | Default |
+=========+============+==================================+================+=========+
| **Heade | **USER\_ID |                                  | string         |         |
| r**     | **\ *optio |                                  |                |         |
|         | nal*       |                                  |                |         |
+---------+------------+----------------------------------+----------------+---------+
| **Path* | **resource | validValues: normative-resource  | enum           |         |
| *       | Authority* | / user-resource                  | (multipart,    |         |
|         | *\ *requir |                                  | user-resource, |         |
|         | ed*        |                                  | user-resource- |         |
|         |            |                                  | ui-import)     |         |
+---------+------------+----------------------------------+----------------+---------+
| **Query | **createNe |                                  | boolean        | ``"true |
| **      | wVersion** |                                  |                | "``     |
|         | \ *optiona |                                  |                |         |
|         | l*         |                                  |                |         |
+---------+------------+----------------------------------+----------------+---------+
| **FormD | **resource | resourceMetadata                 | string         |         |
| ata**   | Metadata** |                                  |                |         |
|         | \ *optiona |                                  |                |         |
|         | l*         |                                  |                |         |
+---------+------------+----------------------------------+----------------+---------+
| **FormD | **resource | FileInputStream                  | file           |         |
| ata**   | Zip**\ *op |                                  |                |         |
|         | tional*    |                                  |                |         |
+---------+------------+----------------------------------+----------------+---------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Resource already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``multipart/form-data``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resources Catalog Upload

Create Capability Type from yaml
--------------------------------

::

    POST /v1/catalog/uploadType/capability

Description
~~~~~~~~~~~

Returns created Capability Type

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **FormDa | **capabilit | FileInputStream                      | file             |
| ta**     | yTypeZip**\ |                                      |                  |
|          |  *optional* |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Capability Type created                            | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Capability Type already exist                      | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``multipart/form-data``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Catalog Types Upload

Create Categories from yaml
---------------------------

::

    POST /v1/catalog/uploadType/categories

Description
~~~~~~~~~~~

Returns created categories

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **FormDa | **categorie | FileInputStream                      | file             |
| ta**     | sZip**\ *op |                                      |                  |
|          | tional*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Categories created                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Category already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``multipart/form-data``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Catalog Types Upload

Create Categories from yaml
---------------------------

::

    POST /v1/catalog/uploadType/datatypes

Description
~~~~~~~~~~~

Returns created data types

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **FormDa | **dataTypes | FileInputStream                      | file             |
| ta**     | Zip**\ *opt |                                      |                  |
|          | ional*      |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Data types created                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Data types already exist                           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``multipart/form-data``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Catalog Types Upload

Create GroupTypes from yaml
---------------------------

::

    POST /v1/catalog/uploadType/grouptypes

Description
~~~~~~~~~~~

Returns created group types

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **FormDa | **groupType | FileInputStream                      | file             |
| ta**     | sZip**\ *op |                                      |                  |
|          | tional*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | group types created                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | group types already exist                          | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``multipart/form-data``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Catalog Types Upload

Create Interface Lyfecycle Type from yaml
-----------------------------------------

::

    POST /v1/catalog/uploadType/interfaceLifecycle

Description
~~~~~~~~~~~

Returns created Interface Lifecycle Type

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **FormDa | **interface | FileInputStream                      | file             |
| ta**     | LifecycleTy |                                      |                  |
|          | peZip**\ *o |                                      |                  |
|          | ptional*    |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Interface Lifecycle Type created                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Interface Lifecycle Type already exist             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``multipart/form-data``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Catalog Types Upload

Create PolicyTypes from yaml
----------------------------

::

    POST /v1/catalog/uploadType/policytypes

Description
~~~~~~~~~~~

Returns created policy types

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **FormDa | **policyTyp | FileInputStream                      | file             |
| ta**     | esZip**\ *o |                                      |                  |
|          | ptional*    |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | policy types created                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | policy types already exist                         | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``multipart/form-data``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Catalog Types Upload

Change Resource lifecycle State
-------------------------------

::

    POST /v1/catalog/{componentCollection}/{componentId}/lifecycleState/{lifecycleOperation}

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | id of user initiating the operation  | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | validValues: resources / services /  | enum (resources, |
|          | Collection* | products                             | services,        |
|          | *\ *require |                                      | products)        |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | id of component to be changed        | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **lifecycle |                                      | enum (checkout,  |
|          | Operation** |                                      | undoCheckout,    |
|          | \ *required |                                      | checkin,         |
|          | *           |                                      | certificationReq |
|          |             |                                      | uest,            |
|          |             |                                      | startCertificati |
|          |             |                                      | on,              |
|          |             |                                      | failCertificatio |
|          |             |                                      | n,               |
|          |             |                                      | cancelCertificat |
|          |             |                                      | ion,             |
|          |             |                                      | certify)         |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | LifecycleChangeInfo - relevant for   | string           |
|          | optional*   | checkin, failCertification,          |                  |
|          |             | cancelCertification                  |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource state changed                             | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Resource already exist                             | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Lifecycle Actions Servlet

Get Component Requirments And Capabilities
------------------------------------------

::

    GET /v1/catalog/{componentType}/latestversion/notabstract

Description
~~~~~~~~~~~

Returns Requirments And Capabilities according to componentId

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Type**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Query* | **internalC |                                      | string           |
| *        | omponentTyp |                                      |                  |
|          | e**\ *optio |                                      |                  |
|          | nal*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Consumer Object to be created        | < string > array |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Component Servlet

Get Component uid only
----------------------

::

    GET /v1/catalog/{componentType}/latestversion/notabstract/metadata

Description
~~~~~~~~~~~

Returns componentId

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Type**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Query* | **internalC |                                      | string           |
| *        | omponentTyp |                                      |                  |
|          | e**\ *optio |                                      |                  |
|          | nal*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | uid list                             | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Component Servlet

Get Component instances
-----------------------

::

    GET /v1/catalog/{componentType}/{componentId}/componentInstances

Description
~~~~~~~~~~~

Returns component instances

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Type**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Query* | **searchTex |                                      | string           |
| *        | t**\ *optio |                                      |                  |
|          | nal*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | uid list                             | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Component Servlet

Get properties
--------------

::

    GET /v1/catalog/{componentType}/{componentId}/componentInstances/{instanceId}/{inputId}/properties

Description
~~~~~~~~~~~

Returns properties list

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **inputId**\ *required*  | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **instanceId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Input Catalog

Get Inputs only
---------------

::

    GET /v1/catalog/{componentType}/{componentId}/componentInstances/{instanceId}/{originComponentUid}/inputs

Description
~~~~~~~~~~~

Returns Inputs list

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **instanceId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **originComponentUid**\  | string                           |
|                  | *required*               |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Input Catalog

Create inputs on service
------------------------

::

    POST /v1/catalog/{componentType}/{componentId}/create/inputs

Description
~~~~~~~~~~~

Return inputs list

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Type**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | ComponentIns Inputs Object to be     | string           |
|          | required*   | created                              |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Input Catalog

Delete input from service
-------------------------

::

    DELETE /v1/catalog/{componentType}/{componentId}/delete/{inputId}/input

Description
~~~~~~~~~~~

Delete service input

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Type**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **inputId** |                                      | string           |
|          | \ *required |                                      |                  |
|          | *           |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Service Input to be deleted          | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Input deleted                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Input not found                                    | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Input Catalog

Retrieve Resource
-----------------

::

    GET /v1/catalog/{componentType}/{componentId}/filteredDataByParams

Description
~~~~~~~~~~~

Returns resource according to resourceId

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Query**        | **include**\ *optional*  | < string > array(multi)          |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Resource not found                                 | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Component Servlet

Retrieve properties belonging to component instances of specific component by name and optionally resource type
---------------------------------------------------------------------------------------------------------------

::

    GET /v1/catalog/{componentType}/{componentId}/filteredproperties/{propertyNameFragment}

Description
~~~~~~~~~~~

Returns properties belonging to component instances of specific
component by name and optionally resource type

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **propertyNameFragment** | string                           |
|                  | \ *required*             |                                  |
+------------------+--------------------------+----------------------------------+
| **Query**        | **resourceType**\ *optio | < string > array(multi)          |
|                  | nal*                     |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Component Servlet

Get inputs
----------

::

    GET /v1/catalog/{componentType}/{componentId}/inputs/{inputId}

Description
~~~~~~~~~~~

Returns inputs list

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **inputId**\ *required*  | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Input Catalog

Get inputs
----------

::

    GET /v1/catalog/{componentType}/{componentId}/inputs/{inputId}/inputs

Description
~~~~~~~~~~~

Returns inputs list

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **inputId**\ *required*  | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Input Catalog

Get Component Requirments And Capabilities
------------------------------------------

::

    GET /v1/catalog/{componentType}/{componentId}/requirmentsCapabilities

Description
~~~~~~~~~~~

Returns Requirements And Capabilities according to componentId

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Component Servlet

Validate Component Conformance Level
------------------------------------

::

    GET /v1/catalog/{componentType}/{componentUuid}/conformanceLevelValidation

Description
~~~~~~~~~~~

Returns the result according to conformance level in BE config

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentUuid**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component found                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component not found                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Component Servlet

Get component Artifacts
-----------------------

::

    GET /v1/catalog/{containerComponentType}/{componentId}/artifactsByType/{artifactGroupType}

Description
~~~~~~~~~~~

Returns artifacts

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **artifactG |                                      | string           |
|          | roupType**\ |                                      |                  |
|          |  *required* |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component artifacts                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Resource/Artifact not found                        | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Get group artifacts
-------------------

::

    GET /v1/catalog/{containerComponentType}/{componentId}/groups/{groupId}

Description
~~~~~~~~~~~

Returns artifacts metadata according to groupId

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **containerComponentType | string                           |
|                  | **\ *required*           |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **groupId**\ *required*  | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | group found                                        | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Group not found                                    | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Group Servlet

Update Group Metadata
---------------------

::

    PUT /v1/catalog/{containerComponentType}/{componentId}/groups/{groupUniqueId}/metadata

Description
~~~~~~~~~~~

Returns updated group definition

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container |                                      | string           |
|          | ComponentTy |                                      |                  |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **groupUniq |                                      | string           |
|          | ueId**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Service object to be Updated         | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Group Updated                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Group Servlet

Updates List of properties on a group (only values)
---------------------------------------------------

::

    PUT /v1/catalog/{containerComponentType}/{componentId}/groups/{groupUniqueId}/properties

Description
~~~~~~~~~~~

Returns updated list of properties

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container |                                      | string           |
|          | ComponentTy |                                      |                  |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **groupUniq |                                      | string           |
|          | ueId**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Service object to be Updated         | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Group Updated                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Group Servlet

Create ComponentInstance
------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance

Description
~~~~~~~~~~~

Returns created ComponentInstance

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | USER\_ID of modifier user            | string           |
| **       | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | RI object to be created              | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Component created                                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Component instance already exist                   | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Associate RI to RI
------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/associate

Description
~~~~~~~~~~~

Returns created RelationshipInfo

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | unique id of the container component | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | allowed values are resources         | enum (resources, |
|          | ComponentTy | /services / products                 | services,        |
|          | pe**\ *requ |                                      | products)        |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | RelationshipInfo                     | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Relationship created                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Missing information                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Relationship already exist                         | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Create RI and associate RI to RI
--------------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/createAndAssociate

Description
~~~~~~~~~~~

Returns created RI and RelationshipInfo

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | RI created                                         | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Relationship already exist                         | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Dissociate RI from RI
---------------------

::

    PUT /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/dissociate

Description
~~~~~~~~~~~

Returns deleted RelationshipInfo

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | unique id of the container component | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | allowed values are resources         | enum (resources, |
|          | ComponentTy | /services / products                 | services,        |
|          | pe**\ *requ |                                      | products)        |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | RelationshipInfo                     | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Relationship deleted                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Missing information                                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Update resource instance multiple component
-------------------------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/multipleComponentInstance

Description
~~~~~~~~~~~

Returns updated resource instance

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services / | enum (resources, |
|          | ComponentTy | products                             | services,        |
|          | pe**\ *requ |                                      | products)        |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Component Instance JSON Array        | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource instance updated                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Update resource instance
------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}

Description
~~~~~~~~~~~

Returns updated resource instance

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services / | enum (resources, |
|          | ComponentTy | products                             | services,        |
|          | pe**\ *requ |                                      | products)        |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Resource instance updated                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Load Resource Instance artifact payload
---------------------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/artifacts

Description
~~~~~~~~~~~

Returns updated artifact

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **Content-M |                                      | string           |
| **       | D5**\ *opti |                                      |                  |
|          | onal*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Artifact updated                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Delete Resource Instance artifact
---------------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/artifacts/{artifactId}

Description
~~~~~~~~~~~

Returns deleted artifact

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **Content-M |                                      | string           |
| **       | D5**\ *opti |                                      |                  |
|          | onal*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **artifactI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Artifact updated                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Update Resource Instance HEAT\_ENV parameters
---------------------------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/artifacts/{artifactId}/heatParams

Description
~~~~~~~~~~~

Returns updated artifact

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **artifactI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the artifact           | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Artifact updated                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Update resource instance attribute
----------------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/attribute

Description
~~~~~~~~~~~

Returns updated resource instance attribute

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | id of user initiating the operation  | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | service id                           | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | resource instance id                 | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource instance created                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Update resource instance
------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/changeVersion

Description
~~~~~~~~~~~

Returns updated resource instance

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource instance created                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Get group artifacts
-------------------

::

    GET /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/groupInstance/{groupInstId}

Description
~~~~~~~~~~~

Returns artifacts metadata according to groupInstId

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentInstanceId**\ | string                           |
|                  |  *required*              |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **containerComponentType | string                           |
|                  | **\ *required*           |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **groupInstId**\ *requir | string                           |
|                  | ed*                      |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | group found                                        | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Group not found                                    | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Update resource instance property
---------------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/groupInstance/{groupInstanceId}/property

Description
~~~~~~~~~~~

Returns updated resource instance property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | id of user initiating the operation  | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | service id                           | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | resource instance id                 | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **groupInst | group instance id                    | string           |
|          | anceId**\ * |                                      |                  |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource instance created                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Update resource instance property
---------------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/input

Description
~~~~~~~~~~~

Returns updated resource instance property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | id of user initiating the operation  | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | service id                           | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | resource instance id                 | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource instance created                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Update resource instance property
---------------------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/property

Description
~~~~~~~~~~~

Returns updated resource instance property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | id of user initiating the operation  | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | service id                           | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | resource instance id                 | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource instance created                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Update resource instance
------------------------

::

    DELETE /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{componentInstanceId}/property/{propertyId}

Description
~~~~~~~~~~~

Returns deleted resource instance property

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | id of user initiating the operation  | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | service id                           | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | resource instance id                 | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **propertyI | property id                          | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Resource instance created                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Delete ResourceInstance
-----------------------

::

    DELETE /v1/catalog/{containerComponentType}/{componentId}/resourceInstance/{resourceInstanceId}

Description
~~~~~~~~~~~

Returns delete resourceInstance

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services / | enum (resources, |
|          | ComponentTy | products                             | services,        |
|          | pe**\ *requ |                                      | products)        |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **resourceI |                                      | string           |
|          | nstanceId** |                                      |                  |
|          | \ *required |                                      |                  |
|          | *           |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | ResourceInstance deleted                           | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Download component Artifact in Base64
-------------------------------------

::

    GET /v1/catalog/{containerComponentType}/{componentId}/resourceInstances/{componentInstanceId}/artifacts/{artifactId}

Description
~~~~~~~~~~~

Returns downloaded artifact

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **artifactI |                                      | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | ResourceInstance artifact downloaded               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | ResourceInstance/Artifact not found                | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Get component Artifacts
-----------------------

::

    GET /v1/catalog/{containerComponentType}/{componentId}/resourceInstances/{componentInstanceId}/artifactsByType/{artifactGroupType}

Description
~~~~~~~~~~~

Returns artifacts

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **artifactG |                                      | string           |
|          | roupType**\ |                                      |                  |
|          |  *required* |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Component artifacts                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Resource/Artifact not found                        | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Artifact Servlet

Update resource inputs
----------------------

::

    POST /v1/catalog/{containerComponentType}/{componentId}/update/inputs

Description
~~~~~~~~~~~

Returns updated input

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **component |                                      | string           |
|          | Id**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the input              | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Input updated                                      | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Input Catalog

Get component instance properties
---------------------------------

::

    GET /v1/catalog/{containerComponentType}/{containerComponentId}/componentInstances/{componentInstanceUniqueId}/properties

Description
~~~~~~~~~~~

Returns component instance properties

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentInstanceUniqu | string                           |
|                  | eId**\ *required*        |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **containerComponentId** | string                           |
|                  | \ *required*             |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **containerComponentType | string                           |
|                  | **\ *required*           |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Properties found                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Component/Component Instance - not found           | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Create service proxy
--------------------

::

    POST /v1/catalog/{containerComponentType}/{containerComponentId}/serviceProxy

Description
~~~~~~~~~~~

Returns created service proxy

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | USER\_ID of modifier user            | string           |
| **       | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container |                                      | string           |
|          | ComponentId |                                      |                  |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | RI object to be created              | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Service proxy created                              | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Service proxy already exist                        | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Delete service proxy
--------------------

::

    DELETE /v1/catalog/{containerComponentType}/{containerComponentId}/serviceProxy/{serviceProxyId}

Description
~~~~~~~~~~~

Returns delete service proxy

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **container |                                      | string           |
|          | ComponentId |                                      |                  |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services / | enum (resources, |
|          | ComponentTy | products                             | services,        |
|          | pe**\ *requ |                                      | products)        |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **servicePr |                                      | string           |
|          | oxyId**\ *r |                                      |                  |
|          | equired*    |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Service proxy deleted                              | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Update service proxy with new version
-------------------------------------

::

    POST /v1/catalog/{containerComponentType}/{containerComponentId}/serviceProxy/{serviceProxyId}/changeVersion/{newServiceId}

Description
~~~~~~~~~~~

Returns updated service proxy

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **container |                                      | string           |
|          | ComponentId |                                      |                  |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **container | valid values: resources / services   | enum (resources, |
|          | ComponentTy |                                      | services)        |
|          | pe**\ *requ |                                      |                  |
|          | ired*       |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **servicePr |                                      | string           |
|          | oxyId**\ *r |                                      |                  |
|          | equired*    |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Service proxy created                              | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Resource Instance Servlet

Update Group Instance Property Values
-------------------------------------

::

    PUT /v1/catalog/{containerComponentType}/{serviceId}/resourceInstance/{componentInstanceId}/groupInstance/{groupInstanceId}

Description
~~~~~~~~~~~

Returns updated group instance

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component |                                      | string           |
|          | InstanceId* |                                      |                  |
|          | *\ *require |                                      |                  |
|          | d*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **groupInst |                                      | string           |
|          | anceId**\ * |                                      |                  |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **serviceId |                                      | string           |
|          | **\ *requir |                                      |                  |
|          | ed*         |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Group instance object to be Updated  | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Group Instance Property Values Updated             | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Service Catalog

Retrieve the all resource, service and product categories
---------------------------------------------------------

::

    GET /v1/categories

Description
~~~~~~~~~~~

Retrieve the all resource, service and product categories

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns categories Ok                              | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Missing information                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Retrieve the list of all resource/service/product categories/sub-categories/groupings
-------------------------------------------------------------------------------------

::

    GET /v1/categories/{componentType}

Description
~~~~~~~~~~~

Retrieve the list of all resource/service/product
categories/sub-categories/groupings.

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | allowed values are resources /       | enum (resources, |
|          | Type**\ *re | services/ products                   | services,        |
|          | quired*     |                                      | products)        |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns categories Ok                              | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid component type                             | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Missing information                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Create new component category
-----------------------------

::

    POST /v1/category/{componentType}

Description
~~~~~~~~~~~

Create new component category

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | allowed values are resources         | enum (resources, |
|          | Type**\ *re | /services / products                 | services,        |
|          | quired*     |                                      | products)        |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Category to be created               | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Category created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid category data                              | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | USER\_ID header is missing                         | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Category already exists / User not permitted to    | No Content     |
|         | perform the action                                 |                |
+---------+----------------------------------------------------+----------------+
| **500** | General Error                                      | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Create new component sub-category
---------------------------------

::

    POST /v1/category/{componentType}/{categoryId}/subCategory

Description
~~~~~~~~~~~

Create new component sub-category for existing category

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **categoryI | Parent category unique ID            | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | allowed values are resources /       | enum (resources, |
|          | Type**\ *re | products                             | products)        |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Subcategory to be created. e.g.      | string           |
|          | required*   | {"name":"Resource-subcat"}           |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Subcategory created                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid subcategory data                           | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | USER\_ID header is missing                         | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Parent category wasn’t found                       | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Subcategory already exists / User not permitted to | No Content     |
|         | perform the action                                 |                |
+---------+----------------------------------------------------+----------------+
| **500** | General Error                                      | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Create new component grouping
-----------------------------

::

    POST /v1/category/{componentType}/{categoryId}/subCategory/{subCategoryId}/grouping

Description
~~~~~~~~~~~

Create new component grouping for existing sub-category

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **categoryI | Parent category unique ID            | string           |
|          | d**\ *requi |                                      |                  |
|          | red*        |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **component | allowed values are products          | enum (products)  |
|          | Type**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **subCatego | Parent sub-category unique ID        | string           |
|          | ryId**\ *re |                                      |                  |
|          | quired*     |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Subcategory to be created            | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Grouping created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid grouping data                              | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | USER\_ID header is missing                         | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Parent category or subcategory were not found      | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Grouping already exists / User not permitted to    | No Content     |
|         | perform the action                                 |                |
+---------+----------------------------------------------------+----------------+
| **500** | General Error                                      | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Delete component category
-------------------------

::

    DELETE /v1/category/{componentType}/{categoryUniqueId}

Description
~~~~~~~~~~~

Delete component category

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **categoryUniqueId**\ *r | string                           |
|                  | equired*                 |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | successful operation                               | `Category <#_c |
|         |                                                    | ategory>`__    |
+---------+----------------------------------------------------+----------------+
| **204** | Category deleted                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | USER\_ID header is missing                         | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Category not found                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | User not permitted to perform the action           | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | General Error                                      | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Delete component category
-------------------------

::

    DELETE /v1/category/{componentType}/{categoryUniqueId}/subCategory/{subCategoryUniqueId}

Description
~~~~~~~~~~~

Delete component category

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **categoryUniqueId**\ *r | string                           |
|                  | equired*                 |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **subCategoryUniqueId**\ | string                           |
|                  |  *required*              |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | successful operation                               | `Category <#_c |
|         |                                                    | ategory>`__    |
+---------+----------------------------------------------------+----------------+
| **204** | Category deleted                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | USER\_ID header is missing                         | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Category not found                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | User not permitted to perform the action           | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | General Error                                      | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Delete component category
-------------------------

::

    DELETE /v1/category/{componentType}/{categoryUniqueId}/subCategory/{subCategoryUniqueId}/grouping/{groupingUniqueId}

Description
~~~~~~~~~~~

Delete component category

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **categoryUniqueId**\ *r | string                           |
|                  | equired*                 |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **groupingUniqueId**\ *r | string                           |
|                  | equired*                 |                                  |
+------------------+--------------------------+----------------------------------+
| **Path**         | **subCategoryUniqueId**\ | string                           |
|                  |  *required*              |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | successful operation                               | `Category <#_c |
|         |                                                    | ategory>`__    |
+---------+----------------------------------------------------+----------------+
| **204** | Category deleted                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | USER\_ID header is missing                         | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Category not found                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | User not permitted to perform the action           | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | General Error                                      | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Retrieve all artifactTypes
--------------------------

::

    GET /v1/configuration/ui

Description
~~~~~~~~~~~

Retrieve all artifactTypes

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns artifactTypes Ok                           | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | No artifactTypes were found                        | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Consumer credentials
--------------------

::

    POST /v1/consumers

Description
~~~~~~~~~~~

Returns created ONAP consumer credentials

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | Consumer Object to be created        | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **201** | Consumer credentials created                       | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid content / Missing content                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Consumer Servlet

Retrieve Consumer
-----------------

::

    GET /v1/consumers/{consumerId}

Description
~~~~~~~~~~~

Returns consumer according to ConsumerID

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **consumerId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Consumer found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Consumer not found                                 | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Consumer Servlet

Deletes Consumer
----------------

::

    DELETE /v1/consumers/{consumerId}

Description
~~~~~~~~~~~

Returns deleted consumer according to ConsumerID

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Path**         | **consumerId**\ *require | string                           |
|                  | d*                       |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | successful operation                               | `ConsumerDefin |
|         |                                                    | ition <#_consu |
|         |                                                    | merdefinition> |
|         |                                                    | `__            |
+---------+----------------------------------------------------+----------------+
| **204** | Consumer deleted                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | Consumer not found                                 | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Consumer Servlet

Retrieve ONAP portal menu - MOC
-------------------------------

::

    GET /v1/ecompPortalMenu

Description
~~~~~~~~~~~

Retrieve ONAP portal menu

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Retrieve ONAP portal menu                          | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Retrieve all followed
---------------------

::

    GET /v1/followed

Description
~~~~~~~~~~~

Retrieve all followed

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns followed Ok                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | User not found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

DELETE /v1/inactiveComponents/{componenttype}
---------------------------------------------

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **componentType**\ *requ | string                           |
|                  | ired*                    |                                  |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **defau | successful operation                               | No Content     |
| lt**    |                                                    |                |
+---------+----------------------------------------------------+----------------+

Tags
~~~~

-  Element Servlet

Retrieve all propertyScopes
---------------------------

::

    GET /v1/propertyScopes

Description
~~~~~~~~~~~

Retrieve all propertyScopes

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns propertyScopes Ok                          | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | No propertyScopes were found                       | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Retrieve catalog resources and services
---------------------------------------

::

    GET /v1/screen

Description
~~~~~~~~~~~

Retrieve catalog resources and services

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+
| **Query**        | **excludeTypes**\ *optio | < enum (PRODUCT, SERVICE, VF,    |
|                  | nal*                     | VFC, CP, VL, VFCMT, CVFC, PNF) > |
|                  |                          | array(multi)                     |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns resources and services Ok                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | User not found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

Retrieve all tags
-----------------

::

    GET /v1/tags

Description
~~~~~~~~~~~

Retrieve all tags

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns tags Ok                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | No tags were found                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  Element Servlet

add user
--------

::

    POST /v1/user

Description
~~~~~~~~~~~

Provision new user

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the user               | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | successful operation                               | `User <#_user> |
|         |                                                    | `__            |
+---------+----------------------------------------------------+----------------+
| **201** | New user created                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid Content.                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Missing information                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **405** | Method Not Allowed                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | User already exists                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  User Administration

retrieve all administrators
---------------------------

::

    GET /v1/user/admins

Description
~~~~~~~~~~~

Returns all administrators

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Path**         | **userId**\ *required*   | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns user Ok                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **405** | Method Not Allowed                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  User Administration

authorize
---------

::

    GET /v1/user/authorize

Description
~~~~~~~~~~~

authorize user

Parameters
~~~~~~~~~~

+------------------+--------------------------+----------------------------------+
| Type             | Name                     | Schema                           |
+==================+==========================+==================================+
| **Header**       | **HTTP\_CSP\_EMAIL**\ *o | string                           |
|                  | ptional*                 |                                  |
+------------------+--------------------------+----------------------------------+
| **Header**       | **HTTP\_CSP\_FIRSTNAME** | string                           |
|                  | \ *optional*             |                                  |
+------------------+--------------------------+----------------------------------+
| **Header**       | **HTTP\_CSP\_LASTNAME**\ | string                           |
|                  |  *optional*              |                                  |
+------------------+--------------------------+----------------------------------+
| **Header**       | **USER\_ID**\ *optional* | string                           |
+------------------+--------------------------+----------------------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns user Ok                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted Access                                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  User Administration

Retrieve the list of all active ASDC users or only group of users having specific roles.
----------------------------------------------------------------------------------------

::

    GET /v1/user/users

Description
~~~~~~~~~~~

Returns list of users with the specified roles, or all of users in the
case of empty *roles* header

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* | Any active user’s USER\_ID           | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Query* | **roles**\  | TESTER,DESIGNER,PRODUCT\_STRATEGIST, | string           |
| *        | *optional*  | OPS,PRODUCT\_MANAGER,GOVERNOR,       |                  |
|          |             | ADMIN OR all users by not typing     |                  |
|          |             | anything                             |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns users Ok                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **204** | No provisioned ASDC users of requested role        | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Missing content                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Restricted Access                                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  User Administration

retrieve user details
---------------------

::

    GET /v1/user/{userId}

Description
~~~~~~~~~~~

Returns user details according to userId

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **userId**\ | userId of user to get                | string           |
|          |  *required* |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns user Ok                                    | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | User not found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **405** | Method Not Allowed                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  User Administration

delete user
-----------

::

    DELETE /v1/user/{userId}

Description
~~~~~~~~~~~

Delete user

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **userId**\ | userId of user to get                | string           |
|          |  *required* |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Update deleted OK                                  | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid Content.                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Missing information                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | User not found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **405** | Method Not Allowed                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | Restricted operation                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  User Administration

update user role
----------------

::

    POST /v1/user/{userId}/role

Description
~~~~~~~~~~~

Update user role

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Header | **USER\_ID* |                                      | string           |
| **       | *\ *optiona |                                      |                  |
|          | l*          |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Path** | **userId**\ | userId of user to get                | string           |
|          |  *required* |                                      |                  |
+----------+-------------+--------------------------------------+------------------+
| **Body** | **body**\ * | json describe the update role        | string           |
|          | required*   |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Update user OK                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **400** | Invalid Content.                                   | No Content     |
+---------+----------------------------------------------------+----------------+
| **403** | Missing information/Restricted operation           | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | User not found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **405** | Method Not Allowed                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **409** | User already exists                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  User Administration

retrieve user role
------------------

::

    GET /v1/user/{userId}/role

Description
~~~~~~~~~~~

Returns user role according to userId

Parameters
~~~~~~~~~~

+----------+-------------+--------------------------------------+------------------+
| Type     | Name        | Description                          | Schema           |
+==========+=============+======================================+==================+
| **Path** | **userId**\ | userId of user to get                | string           |
|          |  *required* |                                      |                  |
+----------+-------------+--------------------------------------+------------------+

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | Returns user role Ok                               | No Content     |
+---------+----------------------------------------------------+----------------+
| **404** | User not found                                     | No Content     |
+---------+----------------------------------------------------+----------------+
| **405** | Method Not Allowed                                 | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Server Error                              | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  User Administration

return the ASDC application version
-----------------------------------

::

    GET /version

Description
~~~~~~~~~~~

return the ASDC application version

Responses
~~~~~~~~~

+---------+----------------------------------------------------+----------------+
| HTTP    | Description                                        | Schema         |
| Code    |                                                    |                |
+=========+====================================================+================+
| **200** | return ASDC version                                | No Content     |
+---------+----------------------------------------------------+----------------+
| **500** | Internal Error                                     | No Content     |
+---------+----------------------------------------------------+----------------+

Consumes
~~~~~~~~

-  ``application/json``

Produces
~~~~~~~~

-  ``application/json``

Tags
~~~~

-  BE Monitoring

Definitions
===========

AdditionalInfoParameterInfo
---------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **key**\ *optional*            | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **value**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+

AdditionalInformationDefinition
-------------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **creationTime**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **lastCreatedCounter**\ *optio | integer (int32)                           |
| nal*                           |                                           |
+--------------------------------+-------------------------------------------+
| **modificationTime**\ *optiona | integer (int64)                           |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **parameters**\ *optional*     | <                                         |
|                                | `AdditionalInfoParameterInfo <#_additiona |
|                                | linfoparameterinfo>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **parentUniqueId**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

ArtifactDataDefinition
----------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **apiUrl**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactChecksum**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **artifactCreator**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **artifactDisplayName**\ *opti | string                                    |
| onal*                          |                                           |
+--------------------------------+-------------------------------------------+
| **artifactGroupType**\ *option | enum (INFORMATIONAL, DEPLOYMENT,          |
| al*                            | LIFE\_CYCLE, SERVICE\_API, TOSCA, OTHER)  |
+--------------------------------+-------------------------------------------+
| **artifactLabel**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactName**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactRef**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactRepository**\ *optio | string                                    |
| nal*                           |                                           |
+--------------------------------+-------------------------------------------+
| **artifactType**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactUUID**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactVersion**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **creationDate**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **creatorFullName**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **duplicated**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **esId**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **generated**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **generatedFromId**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **heatParameters**\ *optional* | <                                         |
|                                | `HeatParameterDataDefinition <#_heatparam |
|                                | eterdatadefinition>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **heatParamsUpdateDate**\ *opt | integer (int64)                           |
| ional*                         |                                           |
+--------------------------------+-------------------------------------------+
| **lastUpdateDate**\ *optional* | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **mandatory**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **payloadUpdateDate**\ *option | integer (int64)                           |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **requiredArtifacts**\ *option | < string > array                          |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **serviceApi**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **timeout**\ *optional*        | integer (int32)                           |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **updaterFullName**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **userIdCreator**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **userIdLastUpdater**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+

ArtifactDefinition
------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **apiUrl**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactChecksum**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **artifactCreator**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **artifactDisplayName**\ *opti | string                                    |
| onal*                          |                                           |
+--------------------------------+-------------------------------------------+
| **artifactGroupType**\ *option | enum (INFORMATIONAL, DEPLOYMENT,          |
| al*                            | LIFE\_CYCLE, SERVICE\_API, TOSCA, OTHER)  |
+--------------------------------+-------------------------------------------+
| **artifactLabel**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactName**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactRef**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactRepository**\ *optio | string                                    |
| nal*                           |                                           |
+--------------------------------+-------------------------------------------+
| **artifactType**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactUUID**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **artifactVersion**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **creationDate**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **creatorFullName**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **duplicated**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **esId**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **generated**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **generatedFromId**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **heatParameters**\ *optional* | <                                         |
|                                | `HeatParameterDataDefinition <#_heatparam |
|                                | eterdatadefinition>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **heatParamsUpdateDate**\ *opt | integer (int64)                           |
| ional*                         |                                           |
+--------------------------------+-------------------------------------------+
| **lastUpdateDate**\ *optional* | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **listHeatParameters**\ *optio | <                                         |
| nal*                           | `HeatParameterDefinition <#_heatparameter |
|                                | definition>`__                            |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **mandatory**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **payloadData**\ *optional*    | < string (byte) > array                   |
+--------------------------------+-------------------------------------------+
| **payloadUpdateDate**\ *option | integer (int64)                           |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **requiredArtifacts**\ *option | < string > array                          |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **serviceApi**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **timeout**\ *optional*        | integer (int32)                           |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **updaterFullName**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **userIdCreator**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **userIdLastUpdater**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+

CapabilityDefinition
--------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **capabilitySources**\ *option | < string > array                          |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **leftOccurrences**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **maxOccurrences**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **minOccurrences**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerName**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **parentName**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **path**\ *optional*           | < string > array                          |
+--------------------------------+-------------------------------------------+
| **properties**\ *optional*     | <                                         |
|                                | `ComponentInstanceProperty <#_componentin |
|                                | stanceproperty>`__                        |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **source**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **validSourceTypes**\ *optiona | < string > array                          |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+

Category
--------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+

CategoryDefinition
------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **icons**\ *optional*          | < string > array                          |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **normalizedName**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **subcategories**\ *optional*  | <                                         |
|                                | `SubCategoryDefinition <#_subcategorydefi |
|                                | nition>`__                                |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

ComponentInstance
-----------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **artifacts**\ *optional*      | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **attributeValueCounter**\ *op | integer (int32)                           |
| tional*                        |                                           |
+--------------------------------+-------------------------------------------+
| **capabilities**\ *optional*   | < string, <                               |
|                                | `CapabilityDefinition <#_capabilitydefini |
|                                | tion>`__                                  |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentName**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **componentUid**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **componentVersion**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **creationTime**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **customizationUUID**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **deploymentArtifacts**\ *opti | < string,                                 |
| onal*                          | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **groupInstances**\ *optional* | < `GroupInstance <#_groupinstance>`__ >   |
|                                | array                                     |
+--------------------------------+-------------------------------------------+
| **icon**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **inputValueCounter**\ *option | integer (int32)                           |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **invariantName**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **modificationTime**\ *optiona | integer (int64)                           |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **normalizedName**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **originType**\ *optional*     | enum (PRODUCT, SERVICE, VF, VFC, CP, VL,  |
|                                | VFCMT, CVFC, PNF)                         |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **posX**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **posY**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **propertyValueCounter**\ *opt | integer (int32)                           |
| ional*                         |                                           |
+--------------------------------+-------------------------------------------+
| **requirements**\ *optional*   | < string, <                               |
|                                | `RequirementDefinition <#_requirementdefi |
|                                | nition>`__                                |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **toscaComponentName**\ *optio | string                                    |
| nal*                           |                                           |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

ComponentInstanceInput
----------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **componentInstanceId**\ *opti | string                                    |
| onal*                          |                                           |
+--------------------------------+-------------------------------------------+
| **componentInstanceName**\ *op | string                                    |
| tional*                        |                                           |
+--------------------------------+-------------------------------------------+
| **constraints**\ *optional*    | <                                         |
|                                | `PropertyConstraint <#_propertyconstraint |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **defaultValue**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **definition**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **getInputValues**\ *optional* | <                                         |
|                                | `GetInputValueDataDefinition <#_getinputv |
|                                | aluedatadefinition>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **hidden**\ *optional*         | boolean                                   |
+--------------------------------+-------------------------------------------+
| **immutable**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **inputId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **inputPath**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **inputs**\ *optional*         | <                                         |
|                                | `ComponentInstanceInput <#_componentinsta |
|                                | nceinput>`__                              |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **instanceUniqueId**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **label**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **parentUniqueId**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **password**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **path**\ *optional*           | < string > array                          |
+--------------------------------+-------------------------------------------+
| **properties**\ *optional*     | <                                         |
|                                | `ComponentInstanceProperty <#_componentin |
|                                | stanceproperty>`__                        |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **propertyId**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **required**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **rules**\ *optional*          | < `PropertyRule <#_propertyrule>`__ >     |
|                                | array                                     |
+--------------------------------+-------------------------------------------+
| **schema**\ *optional*         | `SchemaDefinition <#_schemadefinition>`__ |
+--------------------------------+-------------------------------------------+
| **status**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **value**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+
| **valueUniqueUid**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+

ComponentInstanceProperty
-------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **componentInstanceId**\ *opti | string                                    |
| onal*                          |                                           |
+--------------------------------+-------------------------------------------+
| **componentInstanceName**\ *op | string                                    |
| tional*                        |                                           |
+--------------------------------+-------------------------------------------+
| **constraints**\ *optional*    | <                                         |
|                                | `PropertyConstraint <#_propertyconstraint |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **defaultValue**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **definition**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **getInputValues**\ *optional* | <                                         |
|                                | `GetInputValueDataDefinition <#_getinputv |
|                                | aluedatadefinition>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **hidden**\ *optional*         | boolean                                   |
+--------------------------------+-------------------------------------------+
| **immutable**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **inputId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **inputPath**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **instanceUniqueId**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **label**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **parentUniqueId**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **password**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **path**\ *optional*           | < string > array                          |
+--------------------------------+-------------------------------------------+
| **propertyId**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **required**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **rules**\ *optional*          | < `PropertyRule <#_propertyrule>`__ >     |
|                                | array                                     |
+--------------------------------+-------------------------------------------+
| **schema**\ *optional*         | `SchemaDefinition <#_schemadefinition>`__ |
+--------------------------------+-------------------------------------------+
| **status**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **value**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+
| **valueUniqueUid**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+

ComponentMetadataDataDefinition
-------------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **allVersions**\ *optional*    | < string, string > map                    |
+--------------------------------+-------------------------------------------+
| **componentType**\ *optional*  | enum (RESOURCE, SERVICE,                  |
|                                | RESOURCE\_INSTANCE, PRODUCT,              |
|                                | SERVICE\_INSTANCE)                        |
+--------------------------------+-------------------------------------------+
| **conformanceLevel**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **contactId**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **creationDate**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **creatorFullName**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **creatorUserId**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **csarUUID**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **csarVersion**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **deleted**\ *optional*        | boolean                                   |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **highestVersion**\ *optional* | boolean                                   |
+--------------------------------+-------------------------------------------+
| **icon**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **importedToscaChecksum**\ *op | string                                    |
| tional*                        |                                           |
+--------------------------------+-------------------------------------------+
| **invariantUUID**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **isDeleted**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **isHighestVersion**\ *optiona | boolean                                   |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **lastUpdateDate**\ *optional* | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **lastUpdaterFullName**\ *opti | string                                    |
| onal*                          |                                           |
+--------------------------------+-------------------------------------------+
| **lastUpdaterUserId**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **lifecycleState**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **normalizedName**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **projectCode**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **state**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+
| **systemName**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **tags**\ *optional*           | < string > array                          |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **uuid**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **version**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+

ComponentMetadataDefinition
---------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **metadataDataDefinition**\ *o | `ComponentMetadataDataDefinition <#_compo |
| ptional*                       | nentmetadatadatadefinition>`__            |
+--------------------------------+-------------------------------------------+

ConsumerDefinition
------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **consumerDetailsLastupdatedti | integer (int64)                           |
| me**\ *optional*               |                                           |
+--------------------------------+-------------------------------------------+
| **consumerLastAuthenticationTi | integer (int64)                           |
| me**\ *optional*               |                                           |
+--------------------------------+-------------------------------------------+
| **consumerName**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **consumerPassword**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **consumerSalt**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **lastModfierAtuid**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+

DistributionStatusInfo
----------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **errorReason**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **omfComponentID**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **status**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **timestamp**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **url**\ *optional*            | string                                    |
+--------------------------------+-------------------------------------------+

DistributionStatusListResponse
------------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **distributionStatusList**\ *o | <                                         |
| ptional*                       | `DistributionStatusInfo <#_distributionst |
|                                | atusinfo>`__                              |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+

GetInputValueDataDefinition
---------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **getInputIndex**\ *optional*  | `GetInputValueDataDefinition <#_getinputv |
|                                | aluedatadefinition>`__                    |
+--------------------------------+-------------------------------------------+
| **indexValue**\ *optional*     | integer (int32)                           |
+--------------------------------+-------------------------------------------+
| **inputId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **inputName**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **list**\ *optional*           | boolean                                   |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **propName**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

GroupDefinition
---------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **artifacts**\ *optional*      | < string > array                          |
+--------------------------------+-------------------------------------------+
| **artifactsUuid**\ *optional*  | < string > array                          |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **groupUUID**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **invariantUUID**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **members**\ *optional*        | < string, string > map                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **properties**\ *optional*     | <                                         |
|                                | `PropertyDataDefinition <#_propertydatade |
|                                | finition>`__                              |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **propertyValueCounter**\ *opt | integer (int32)                           |
| ional*                         |                                           |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **typeUid**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **version**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+

GroupInstance
-------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **artifacts**\ *optional*      | < string > array                          |
+--------------------------------+-------------------------------------------+
| **artifactsUuid**\ *optional*  | < string > array                          |
+--------------------------------+-------------------------------------------+
| **creationTime**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **customizationUUID**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **groupInstanceArtifacts**\ *o | < string > array                          |
| ptional*                       |                                           |
+--------------------------------+-------------------------------------------+
| **groupInstanceArtifactsUuid** | < string > array                          |
| \ *optional*                   |                                           |
+--------------------------------+-------------------------------------------+
| **groupName**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **groupUUID**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **groupUid**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **invariantUUID**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **modificationTime**\ *optiona | integer (int64)                           |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **normalizedName**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **posX**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **posY**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **properties**\ *optional*     | <                                         |
|                                | `PropertyDataDefinition <#_propertydatade |
|                                | finition>`__                              |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **propertyValueCounter**\ *opt | integer (int32)                           |
| ional*                         |                                           |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **version**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+

GroupingDefinition
------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **normalizedName**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

HeatParameterDataDefinition
---------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **currentValue**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **defaultValue**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

HeatParameterDefinition
-----------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **currentValue**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **defaultValue**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

InputDefinition
---------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **constraints**\ *optional*    | <                                         |
|                                | `PropertyConstraint <#_propertyconstraint |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **defaultValue**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **definition**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **getInputValues**\ *optional* | <                                         |
|                                | `GetInputValueDataDefinition <#_getinputv |
|                                | aluedatadefinition>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **hidden**\ *optional*         | boolean                                   |
+--------------------------------+-------------------------------------------+
| **immutable**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **inputId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **inputPath**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **inputs**\ *optional*         | <                                         |
|                                | `ComponentInstanceInput <#_componentinsta |
|                                | nceinput>`__                              |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **instanceUniqueId**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **label**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **parentUniqueId**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **password**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **properties**\ *optional*     | <                                         |
|                                | `ComponentInstanceProperty <#_componentin |
|                                | stanceproperty>`__                        |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **propertyId**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **required**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **schema**\ *optional*         | `SchemaDefinition <#_schemadefinition>`__ |
+--------------------------------+-------------------------------------------+
| **status**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **value**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+

InterfaceDefinition
-------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **creationDate**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **definition**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **lastUpdateDate**\ *optional* | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **operations**\ *optional*     | < string,                                 |
|                                | `OperationDataDefinition <#_operationdata |
|                                | definition>`__                            |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **operationsMap**\ *optional*  | < string, `Operation <#_operation>`__ >   |
|                                | map                                       |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

LifecycleChangeInfoWithAction
-----------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **action**\ *optional*         | enum (CREATE\_FROM\_CSAR,                 |
|                                | UPDATE\_FROM\_EXTERNAL\_API)              |
+--------------------------------+-------------------------------------------+
| **userRemarks**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+

Operation
---------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **creationDate**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **definition**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **implementation**\ *optional* | `ArtifactDataDefinition <#_artifactdatade |
|                                | finition>`__                              |
+--------------------------------+-------------------------------------------+
| **implementationArtifact**\ *o | `ArtifactDefinition <#_artifactdefinition |
| ptional*                       | >`__                                      |
+--------------------------------+-------------------------------------------+
| **inputs**\ *optional*         | < string,                                 |
|                                | `PropertyDataDefinition <#_propertydatade |
|                                | finition>`__                              |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **lastUpdateDate**\ *optional* | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

OperationDataDefinition
-----------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **creationDate**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **implementation**\ *optional* | `ArtifactDataDefinition <#_artifactdatade |
|                                | finition>`__                              |
+--------------------------------+-------------------------------------------+
| **inputs**\ *optional*         | < string,                                 |
|                                | `PropertyDataDefinition <#_propertydatade |
|                                | finition>`__                              |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **lastUpdateDate**\ *optional* | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

Product
-------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **additionalInformation**\ *op | <                                         |
| tional*                        | `AdditionalInformationDefinition <#_addit |
|                                | ionalinformationdefinition>`__            |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **allArtifacts**\ *optional*   | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **allVersions**\ *optional*    | < string, string > map                    |
+--------------------------------+-------------------------------------------+
| **artifacts**\ *optional*      | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **capabilities**\ *optional*   | < string, <                               |
|                                | `CapabilityDefinition <#_capabilitydefini |
|                                | tion>`__                                  |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **categories**\ *optional*     | <                                         |
|                                | `CategoryDefinition <#_categorydefinition |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **componentInstances**\ *optio | <                                         |
| nal*                           | `ComponentInstance <#_componentinstance>` |
|                                | __                                        |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **componentInstancesAttributes | < string, <                               |
| **\ *optional*                 | `ComponentInstanceProperty <#_componentin |
|                                | stanceproperty>`__                        |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentInstancesInputs**\  | < string, <                               |
| *optional*                     | `ComponentInstanceInput <#_componentinsta |
|                                | nceinput>`__                              |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentInstancesProperties | < string, <                               |
| **\ *optional*                 | `ComponentInstanceProperty <#_componentin |
|                                | stanceproperty>`__                        |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentInstancesRelations* | <                                         |
| *\ *optional*                  | `RequirementCapabilityRelDef <#_requireme |
|                                | ntcapabilityreldef>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **componentMetadataDefinition* | `ComponentMetadataDefinition <#_component |
| *\ *optional*                  | metadatadefinition>`__                    |
+--------------------------------+-------------------------------------------+
| **componentType**\ *optional*  | enum (RESOURCE, SERVICE,                  |
|                                | RESOURCE\_INSTANCE, PRODUCT,              |
|                                | SERVICE\_INSTANCE)                        |
+--------------------------------+-------------------------------------------+
| **conformanceLevel**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **contactId**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **contacts**\ *optional*       | < string > array                          |
+--------------------------------+-------------------------------------------+
| **creationDate**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **creatorFullName**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **creatorUserId**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **csarUUID**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **csarVersion**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **deploymentArtifacts**\ *opti | < string,                                 |
| onal*                          | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **derivedFromGenericType**\ *o | string                                    |
| ptional*                       |                                           |
+--------------------------------+-------------------------------------------+
| **derivedFromGenericVersion**\ | string                                    |
|  *optional*                    |                                           |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **fullName**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **groups**\ *optional*         | < `GroupDefinition <#_groupdefinition>`__ |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **highestVersion**\ *optional* | boolean                                   |
+--------------------------------+-------------------------------------------+
| **icon**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **importedToscaChecksum**\ *op | string                                    |
| tional*                        |                                           |
+--------------------------------+-------------------------------------------+
| **inputs**\ *optional*         | < `InputDefinition <#_inputdefinition>`__ |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **invariantUUID**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **isActive**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **isDeleted**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **lastUpdateDate**\ *optional* | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **lastUpdaterFullName**\ *opti | string                                    |
| onal*                          |                                           |
+--------------------------------+-------------------------------------------+
| **lastUpdaterUserId**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **lifecycleState**\ *optional* | enum (READY\_FOR\_CERTIFICATION,          |
|                                | CERTIFICATION\_IN\_PROGRESS, CERTIFIED,   |
|                                | NOT\_CERTIFIED\_CHECKIN,                  |
|                                | NOT\_CERTIFIED\_CHECKOUT)                 |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **normalizedName**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **projectCode**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **requirements**\ *optional*   | < string, <                               |
|                                | `RequirementDefinition <#_requirementdefi |
|                                | nition>`__                                |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **systemName**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **tags**\ *optional*           | < string > array                          |
+--------------------------------+-------------------------------------------+
| **toscaArtifacts**\ *optional* | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **toscaType**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **uuid**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **version**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+

PropertyConstraint
------------------

*Type* : object

PropertyDataDefinition
----------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **defaultValue**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **definition**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **getInputValues**\ *optional* | <                                         |
|                                | `GetInputValueDataDefinition <#_getinputv |
|                                | aluedatadefinition>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **hidden**\ *optional*         | boolean                                   |
+--------------------------------+-------------------------------------------+
| **immutable**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **inputId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **inputPath**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **instanceUniqueId**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **label**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **parentUniqueId**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **password**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **propertyId**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **required**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **schema**\ *optional*         | `SchemaDefinition <#_schemadefinition>`__ |
+--------------------------------+-------------------------------------------+
| **status**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **value**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+

PropertyDefinition
------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **constraints**\ *optional*    | <                                         |
|                                | `PropertyConstraint <#_propertyconstraint |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **defaultValue**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **definition**\ *optional*     | boolean                                   |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **getInputValues**\ *optional* | <                                         |
|                                | `GetInputValueDataDefinition <#_getinputv |
|                                | aluedatadefinition>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **hidden**\ *optional*         | boolean                                   |
+--------------------------------+-------------------------------------------+
| **immutable**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **inputId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **inputPath**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **instanceUniqueId**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **label**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **parentUniqueId**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **password**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **propertyId**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **required**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **schema**\ *optional*         | `SchemaDefinition <#_schemadefinition>`__ |
+--------------------------------+-------------------------------------------+
| **status**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **value**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+

PropertyRule
------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **firstToken**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **rule**\ *optional*           | < string > array                          |
+--------------------------------+-------------------------------------------+
| **ruleSize**\ *optional*       | integer (int32)                           |
+--------------------------------+-------------------------------------------+
| **value**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+

RelationshipImpl
----------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **type**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+

RequirementAndRelationshipPair
------------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **capability**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **capabilityOwnerId**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **capabilityUid**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **id**\ *optional*             | string                                    |
+--------------------------------+-------------------------------------------+
| **relationship**\ *optional*   | `RelationshipImpl <#_relationshipimpl>`__ |
+--------------------------------+-------------------------------------------+
| **requirement**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **requirementOwnerId**\ *optio | string                                    |
| nal*                           |                                           |
+--------------------------------+-------------------------------------------+
| **requirementUid**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+

RequirementCapabilityRelDef
---------------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **fromNode**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **relationships**\ *optional*  | <                                         |
|                                | `RequirementAndRelationshipPair <#_requir |
|                                | ementandrelationshippair>`__              |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **toNode**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **uid**\ *optional*            | string                                    |
+--------------------------------+-------------------------------------------+

RequirementDefinition
---------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **capability**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **leftOccurrences**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **maxOccurrences**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **minOccurrences**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **node**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerName**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **parentName**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **path**\ *optional*           | < string > array                          |
+--------------------------------+-------------------------------------------+
| **relationship**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **source**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

Resource
--------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **abstract**\ *optional*       | boolean                                   |
+--------------------------------+-------------------------------------------+
| **additionalInformation**\ *op | <                                         |
| tional*                        | `AdditionalInformationDefinition <#_addit |
|                                | ionalinformationdefinition>`__            |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **allArtifacts**\ *optional*   | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **allVersions**\ *optional*    | < string, string > map                    |
+--------------------------------+-------------------------------------------+
| **artifacts**\ *optional*      | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **attributes**\ *optional*     | <                                         |
|                                | `PropertyDefinition <#_propertydefinition |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **capabilities**\ *optional*   | < string, <                               |
|                                | `CapabilityDefinition <#_capabilitydefini |
|                                | tion>`__                                  |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **categories**\ *optional*     | <                                         |
|                                | `CategoryDefinition <#_categorydefinition |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **componentInstances**\ *optio | <                                         |
| nal*                           | `ComponentInstance <#_componentinstance>` |
|                                | __                                        |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **componentInstancesAttributes | < string, <                               |
| **\ *optional*                 | `ComponentInstanceProperty <#_componentin |
|                                | stanceproperty>`__                        |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentInstancesInputs**\  | < string, <                               |
| *optional*                     | `ComponentInstanceInput <#_componentinsta |
|                                | nceinput>`__                              |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentInstancesProperties | < string, <                               |
| **\ *optional*                 | `ComponentInstanceProperty <#_componentin |
|                                | stanceproperty>`__                        |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentInstancesRelations* | <                                         |
| *\ *optional*                  | `RequirementCapabilityRelDef <#_requireme |
|                                | ntcapabilityreldef>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **componentMetadataDefinition* | `ComponentMetadataDefinition <#_component |
| *\ *optional*                  | metadatadefinition>`__                    |
+--------------------------------+-------------------------------------------+
| **componentType**\ *optional*  | enum (RESOURCE, SERVICE,                  |
|                                | RESOURCE\_INSTANCE, PRODUCT,              |
|                                | SERVICE\_INSTANCE)                        |
+--------------------------------+-------------------------------------------+
| **conformanceLevel**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **contactId**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **cost**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **creationDate**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **creatorFullName**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **creatorUserId**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **csarUUID**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **csarVersion**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **defaultCapabilities**\ *opti | < string > array                          |
| onal*                          |                                           |
+--------------------------------+-------------------------------------------+
| **deploymentArtifacts**\ *opti | < string,                                 |
| onal*                          | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **derivedFrom**\ *optional*    | < string > array                          |
+--------------------------------+-------------------------------------------+
| **derivedFromGenericType**\ *o | string                                    |
| ptional*                       |                                           |
+--------------------------------+-------------------------------------------+
| **derivedFromGenericVersion**\ | string                                    |
|  *optional*                    |                                           |
+--------------------------------+-------------------------------------------+
| **derivedList**\ *optional*    | < string > array                          |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **groups**\ *optional*         | < `GroupDefinition <#_groupdefinition>`__ |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **highestVersion**\ *optional* | boolean                                   |
+--------------------------------+-------------------------------------------+
| **icon**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **importedToscaChecksum**\ *op | string                                    |
| tional*                        |                                           |
+--------------------------------+-------------------------------------------+
| **inputs**\ *optional*         | < `InputDefinition <#_inputdefinition>`__ |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **interfaces**\ *optional*     | < string,                                 |
|                                | `InterfaceDefinition <#_interfacedefiniti |
|                                | on>`__                                    |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **invariantUUID**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **isDeleted**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **lastUpdateDate**\ *optional* | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **lastUpdaterFullName**\ *opti | string                                    |
| onal*                          |                                           |
+--------------------------------+-------------------------------------------+
| **lastUpdaterUserId**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **licenseType**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **lifecycleState**\ *optional* | enum (READY\_FOR\_CERTIFICATION,          |
|                                | CERTIFICATION\_IN\_PROGRESS, CERTIFIED,   |
|                                | NOT\_CERTIFIED\_CHECKIN,                  |
|                                | NOT\_CERTIFIED\_CHECKOUT)                 |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **normalizedName**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **projectCode**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **properties**\ *optional*     | <                                         |
|                                | `PropertyDefinition <#_propertydefinition |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **requirements**\ *optional*   | < string, <                               |
|                                | `RequirementDefinition <#_requirementdefi |
|                                | nition>`__                                |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **resourceType**\ *optional*   | enum (VFC, VF, CP, PNF, CVFC, VL, VFCMT,  |
|                                | ABSTRACT)                                 |
+--------------------------------+-------------------------------------------+
| **resourceVendorModelNumber**\ | string                                    |
|  *optional*                    |                                           |
+--------------------------------+-------------------------------------------+
| **systemName**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **tags**\ *optional*           | < string > array                          |
+--------------------------------+-------------------------------------------+
| **toscaArtifacts**\ *optional* | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **toscaResourceName**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **toscaType**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **uuid**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **vendorName**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **vendorRelease**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **version**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+

SchemaDefinition
----------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **constraints**\ *optional*    | < string > array                          |
+--------------------------------+-------------------------------------------+
| **derivedFrom**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **properties**\ *optional*     | < string,                                 |
|                                | `PropertyDataDefinition <#_propertydatade |
|                                | finition>`__                              |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **property**\ *optional*       | `PropertyDataDefinition <#_propertydatade |
|                                | finition>`__                              |
+--------------------------------+-------------------------------------------+

Service
-------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **additionalInformation**\ *op | <                                         |
| tional*                        | `AdditionalInformationDefinition <#_addit |
|                                | ionalinformationdefinition>`__            |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **allArtifacts**\ *optional*   | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **allVersions**\ *optional*    | < string, string > map                    |
+--------------------------------+-------------------------------------------+
| **artifacts**\ *optional*      | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **capabilities**\ *optional*   | < string, <                               |
|                                | `CapabilityDefinition <#_capabilitydefini |
|                                | tion>`__                                  |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **categories**\ *optional*     | <                                         |
|                                | `CategoryDefinition <#_categorydefinition |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **componentInstances**\ *optio | <                                         |
| nal*                           | `ComponentInstance <#_componentinstance>` |
|                                | __                                        |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **componentInstancesAttributes | < string, <                               |
| **\ *optional*                 | `ComponentInstanceProperty <#_componentin |
|                                | stanceproperty>`__                        |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentInstancesInputs**\  | < string, <                               |
| *optional*                     | `ComponentInstanceInput <#_componentinsta |
|                                | nceinput>`__                              |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentInstancesProperties | < string, <                               |
| **\ *optional*                 | `ComponentInstanceProperty <#_componentin |
|                                | stanceproperty>`__                        |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **componentInstancesRelations* | <                                         |
| *\ *optional*                  | `RequirementCapabilityRelDef <#_requireme |
|                                | ntcapabilityreldef>`__                    |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **componentMetadataDefinition* | `ComponentMetadataDefinition <#_component |
| *\ *optional*                  | metadatadefinition>`__                    |
+--------------------------------+-------------------------------------------+
| **componentType**\ *optional*  | enum (RESOURCE, SERVICE,                  |
|                                | RESOURCE\_INSTANCE, PRODUCT,              |
|                                | SERVICE\_INSTANCE)                        |
+--------------------------------+-------------------------------------------+
| **conformanceLevel**\ *optiona | string                                    |
| l*                             |                                           |
+--------------------------------+-------------------------------------------+
| **contactId**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **creationDate**\ *optional*   | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **creatorFullName**\ *optional | string                                    |
| *                              |                                           |
+--------------------------------+-------------------------------------------+
| **creatorUserId**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **csarUUID**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **csarVersion**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **deploymentArtifacts**\ *opti | < string,                                 |
| onal*                          | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **derivedFromGenericType**\ *o | string                                    |
| ptional*                       |                                           |
+--------------------------------+-------------------------------------------+
| **derivedFromGenericVersion**\ | string                                    |
|  *optional*                    |                                           |
+--------------------------------+-------------------------------------------+
| **description**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **distributionStatus**\ *optio | enum (DISTRIBUTION\_NOT\_APPROVED,        |
| nal*                           | DISTRIBUTION\_APPROVED, DISTRIBUTED,      |
|                                | DISTRIBUTION\_REJECTED)                   |
+--------------------------------+-------------------------------------------+
| **ecompGeneratedNaming**\ *opt | boolean                                   |
| ional*                         |                                           |
+--------------------------------+-------------------------------------------+
| **groups**\ *optional*         | < `GroupDefinition <#_groupdefinition>`__ |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **highestVersion**\ *optional* | boolean                                   |
+--------------------------------+-------------------------------------------+
| **icon**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **importedToscaChecksum**\ *op | string                                    |
| tional*                        |                                           |
+--------------------------------+-------------------------------------------+
| **inputs**\ *optional*         | < `InputDefinition <#_inputdefinition>`__ |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **invariantUUID**\ *optional*  | string                                    |
+--------------------------------+-------------------------------------------+
| **isDeleted**\ *optional*      | boolean                                   |
+--------------------------------+-------------------------------------------+
| **lastUpdateDate**\ *optional* | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **lastUpdaterFullName**\ *opti | string                                    |
| onal*                          |                                           |
+--------------------------------+-------------------------------------------+
| **lastUpdaterUserId**\ *option | string                                    |
| al*                            |                                           |
+--------------------------------+-------------------------------------------+
| **lifecycleState**\ *optional* | enum (READY\_FOR\_CERTIFICATION,          |
|                                | CERTIFICATION\_IN\_PROGRESS, CERTIFIED,   |
|                                | NOT\_CERTIFIED\_CHECKIN,                  |
|                                | NOT\_CERTIFIED\_CHECKOUT)                 |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **namingPolicy**\ *optional*   | string                                    |
+--------------------------------+-------------------------------------------+
| **normalizedName**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **projectCode**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **requirements**\ *optional*   | < string, <                               |
|                                | `RequirementDefinition <#_requirementdefi |
|                                | nition>`__                                |
|                                | > array > map                             |
+--------------------------------+-------------------------------------------+
| **serviceApiArtifacts**\ *opti | < string,                                 |
| onal*                          | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **serviceRole**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **serviceType**\ *optional*    | string                                    |
+--------------------------------+-------------------------------------------+
| **systemName**\ *optional*     | string                                    |
+--------------------------------+-------------------------------------------+
| **tags**\ *optional*           | < string > array                          |
+--------------------------------+-------------------------------------------+
| **toscaArtifacts**\ *optional* | < string,                                 |
|                                | `ArtifactDefinition <#_artifactdefinition |
|                                | >`__                                      |
|                                | > map                                     |
+--------------------------------+-------------------------------------------+
| **toscaType**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **uuid**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **version**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+

SubCategoryDefinition
---------------------

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **groupings**\ *optional*      | <                                         |
|                                | `GroupingDefinition <#_groupingdefinition |
|                                | >`__                                      |
|                                | > array                                   |
+--------------------------------+-------------------------------------------+
| **icons**\ *optional*          | < string > array                          |
+--------------------------------+-------------------------------------------+
| **name**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **normalizedName**\ *optional* | string                                    |
+--------------------------------+-------------------------------------------+
| **ownerId**\ *optional*        | string                                    |
+--------------------------------+-------------------------------------------+
| **uniqueId**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+

User
----

+--------------------------------+-------------------------------------------+
| Name                           | Schema                                    |
+================================+===========================================+
| **email**\ *optional*          | string                                    |
+--------------------------------+-------------------------------------------+
| **firstName**\ *optional*      | string                                    |
+--------------------------------+-------------------------------------------+
| **fullName**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **lastLoginTime**\ *optional*  | integer (int64)                           |
+--------------------------------+-------------------------------------------+
| **lastName**\ *optional*       | string                                    |
+--------------------------------+-------------------------------------------+
| **role**\ *optional*           | string                                    |
+--------------------------------+-------------------------------------------+
| **status**\ *optional*         | enum (ACTIVE, INACTIVE)                   |
+--------------------------------+-------------------------------------------+
| **userId**\ *optional*         | string                                    |
+--------------------------------+-------------------------------------------+
