= DCAE Inventory API


[[_overview]]
== Overview
DCAE Inventory is a web service that provides the following:

. Real-time data on all DCAE services and their components
. Comprehensive details on available DCAE service types


=== Version information
[%hardbreaks]
_Version_ : 1.0.0




[[_paths]]
== Paths

[[_dcaeservicetypesget]]
=== GET /dcae-service-types

==== Description
Get a list of `DCAEServiceType` objects.


==== Parameters

[options="header", cols=".^2,.^3,.^9,.^4,.^2"]
|===
|Type|Name|Description|Schema|Default
|*Query*|*offset* +
_optional_|Query resultset offset used for pagination (zero-based)|integer(int32)|
|*Query*|*serviceId* +
_optional_||string|
|*Query*|*serviceLocation* +
_optional_||string|
|*Query*|*vnfType* +
_optional_||string|
|===


==== Responses

[options="header", cols=".^2,.^14,.^4"]
|===
|HTTP Code|Description|Schema
|*200*|List of `DCAEServiceType` objects|<<_inlineresponse200,InlineResponse200>>
|===


==== Consumes

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


==== Produces

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


[[_dcaeservicetypestypenameget]]
=== GET /dcae-service-types/{typeName}

==== Description
Get a `DCAEServiceType` object.


==== Parameters

[options="header", cols=".^2,.^3,.^9,.^4,.^2"]
|===
|Type|Name|Description|Schema|Default
|*Path*|*typeName* +
_required_||string|
|===


==== Responses

[options="header", cols=".^2,.^14,.^4"]
|===
|HTTP Code|Description|Schema
|*200*|Single `DCAEServiceType` object|<<_dcaeservicetype,DCAEServiceType>>
|*404*|Resource not found|<<_dcaeservicetype,DCAEServiceType>>
|===


==== Consumes

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


==== Produces

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


[[_dcaeservicetypestypenameput]]
=== PUT /dcae-service-types/{typeName}

==== Description
Inserts a new `DCAEServiceType` or updates an existing instance. Updates are only allowed iff there are no running DCAE services of the requested type,


==== Parameters

[options="header", cols=".^2,.^3,.^9,.^4,.^2"]
|===
|Type|Name|Description|Schema|Default
|*Path*|*typeName* +
_required_||string|
|*Body*|*body* +
_required_||<<_dcaeservicetyperequest,DCAEServiceTypeRequest>>|
|===


==== Responses

[options="header", cols=".^2,.^14,.^4"]
|===
|HTTP Code|Description|Schema
|*200*|Single `DCAEServiceType` object.|<<_dcaeservicetype,DCAEServiceType>>
|*400*|Bad request provided.|<<_apiresponsemessage,ApiResponseMessage>>
|*409*|Failed to update because there are still DCAE services of the requested type running.|<<_apiresponsemessage,ApiResponseMessage>>
|===


==== Consumes

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


==== Produces

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


[[_dcaeservicesget]]
=== GET /dcae-services

==== Description
Get a list of `DCAEService` objects.


==== Parameters

[options="header", cols=".^2,.^3,.^9,.^4,.^2"]
|===
|Type|Name|Description|Schema|Default
|*Query*|*componentType* +
_optional_|Use to filter by a specific DCAE service component type|string|
|*Query*|*created* +
_optional_|Use to filter by created time|string|
|*Query*|*offset* +
_optional_|Query resultset offset used for pagination (zero-based)|integer(int32)|
|*Query*|*shareable* +
_optional_|Use to filter by DCAE services that have shareable components or not|boolean|
|*Query*|*typeName* +
_optional_|DCAE service type name|string|
|*Query*|*vnfId* +
_optional_||string|
|*Query*|*vnfLocation* +
_optional_||string|
|*Query*|*vnfType* +
_optional_||string|
|===


==== Responses

[options="header", cols=".^2,.^14,.^4"]
|===
|HTTP Code|Description|Schema
|*200*|List of `DCAEService` objects|<<_inlineresponse2001,InlineResponse2001>>
|*502*|Bad response from DCAE controller|<<_apiresponsemessage,ApiResponseMessage>>
|*504*|Failed to connect with DCAE controller|<<_apiresponsemessage,ApiResponseMessage>>
|===


==== Consumes

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


==== Produces

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


[[_dcaeservicesgroupbypropertynameget]]
=== GET /dcae-services-groupby/{propertyName}

==== Description
Get a list of unique values for the given `propertyName`


==== Parameters

[options="header", cols=".^2,.^3,.^9,.^4,.^2"]
|===
|Type|Name|Description|Schema|Default
|*Path*|*propertyName* +
_required_|Property to find unique values. Restricted to `type`, `vnfType`, `vnfLocation`|string|
|===


==== Responses

[options="header", cols=".^2,.^14,.^4"]
|===
|HTTP Code|Description|Schema
|*200*|List of unique property values|<<_dcaeservicegroupbyresults,DCAEServiceGroupByResults>>
|===


==== Consumes

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


==== Produces

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


[[_dcaeservicesserviceidget]]
=== GET /dcae-services/{serviceId}

==== Description
Get a `DCAEService` object.


==== Parameters

[options="header", cols=".^2,.^3,.^9,.^4,.^2"]
|===
|Type|Name|Description|Schema|Default
|*Path*|*serviceId* +
_required_||string|
|===


==== Responses

[options="header", cols=".^2,.^14,.^4"]
|===
|HTTP Code|Description|Schema
|*200*|Single `DCAEService` object|<<_dcaeservice,DCAEService>>
|*404*|DCAE service not found|<<_apiresponsemessage,ApiResponseMessage>>
|*502*|Bad response from DCAE controller|<<_apiresponsemessage,ApiResponseMessage>>
|*504*|Failed to connect with DCAE controller|<<_apiresponsemessage,ApiResponseMessage>>
|===


==== Consumes

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


==== Produces

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


[[_dcaeservicesserviceidput]]
=== PUT /dcae-services/{serviceId}

==== Description
Put a new or update an existing `DCAEService` object.


==== Parameters

[options="header", cols=".^2,.^3,.^9,.^4,.^2"]
|===
|Type|Name|Description|Schema|Default
|*Path*|*serviceId* +
_required_||string|
|*Body*|*body* +
_required_||<<_dcaeservicerequest,DCAEServiceRequest>>|
|===


==== Responses

[options="header", cols=".^2,.^14,.^4"]
|===
|HTTP Code|Description|Schema
|*200*|Single `DCAEService` object|<<_dcaeservice,DCAEService>>
|*422*|Bad request provided|<<_apiresponsemessage,ApiResponseMessage>>
|===


==== Consumes

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


==== Produces

* `application/json`
* `application/vnd.dcae.inventory.v1+json`


[[_dcaeservicesserviceiddelete]]
=== DELETE /dcae-services/{serviceId}

==== Description
Remove an existing `DCAEService` object.


==== Parameters

[options="header", cols=".^2,.^3,.^9,.^4,.^2"]
|===
|Type|Name|Description|Schema|Default
|*Path*|*serviceId* +
_required_||string|
|===


==== Responses

[options="header", cols=".^2,.^14,.^4"]
|===
|HTTP Code|Description|Schema
|*200*|DCAE service has been removed|No Content
|*404*|Unknown DCAE service|<<_apiresponsemessage,ApiResponseMessage>>
|===


==== Consumes

* `application/vnd.dcae.inventory.v1+json`
* `application/json`


==== Produces

* `application/json`
* `application/vnd.dcae.inventory.v1+json`




[[_definitions]]
== Definitions

[[_apiresponsemessage]]
=== ApiResponseMessage

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*code* +
_optional_||integer(int32)
|*message* +
_optional_||string
|*type* +
_optional_||string
|===


[[_dcaeservice]]
=== DCAEService

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*components* +
_optional_||< <<_dcaeservicecomponent,DCAEServiceComponent>> > array
|*created* +
_optional_||string(date-time)
|*deploymentRef* +
_optional_|Reference to a Cloudify deployment|string
|*modified* +
_optional_||string(date-time)
|*selfLink* +
_optional_|Link.title is serviceId|<<_link,Link>>
|*serviceId* +
_optional_||string
|*typeLink* +
_optional_|Link.title is typeName|<<_link,Link>>
|*vnfId* +
_optional_||string
|*vnfLink* +
_optional_|Link.title is vnfId|<<_link,Link>>
|*vnfLocation* +
_optional_|Location information of the associated VNF|string
|*vnfType* +
_optional_||string
|===


[[_dcaeservicecomponent]]
=== DCAEServiceComponent

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*componentId* +
_required_|The id format is unique to the source|string
|*componentLink* +
_required_|Link to the underlying resource of this component|<<_link,Link>>
|*componentSource* +
_required_|Specifies the name of the underying source service that is responsible for this components|enum (DCAEController, DMaaPController)
|*componentType* +
_required_||string
|*created* +
_required_||string(date-time)
|*location* +
_optional_|Location information of the component|string
|*modified* +
_required_||string(date-time)
|*shareable* +
_required_|Used to determine if this component can be shared amongst different DCAE services|integer(int32)
|*status* +
_optional_||string
|===


[[_dcaeservicecomponentrequest]]
=== DCAEServiceComponentRequest

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*componentId* +
_required_|The id format is unique to the source|string
|*componentSource* +
_required_|Specifies the name of the underying source service that is responsible for this components|enum (DCAEController, DMaaPController)
|*componentType* +
_required_||string
|*shareable* +
_required_|Used to determine if this component can be shared amongst different DCAE services|integer(int32)
|===


[[_dcaeservicegroupbyresults]]
=== DCAEServiceGroupByResults

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*propertyName* +
_optional_|Property name of DCAE service that the group by operation was performed on|string
|*propertyValues* +
_optional_||< <<_dcaeservicegroupbyresultspropertyvalues,DCAEServiceGroupByResultsPropertyValues>> > array
|===


[[_dcaeservicegroupbyresultspropertyvalues]]
=== DCAEServiceGroupByResultsPropertyValues

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*count* +
_optional_||integer(int32)
|*dcaeServiceQueryLink* +
_optional_|Link.title is the DCAE service property value. Following this link will provide a list of DCAE services that all have this property value.|<<_link,Link>>
|*propertyValue* +
_optional_||string
|===


[[_dcaeservicerequest]]
=== DCAEServiceRequest

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*components* +
_required_|List of DCAE service components that this service is composed of|< <<_dcaeservicecomponentrequest,DCAEServiceComponentRequest>> > array
|*deploymentRef* +
_optional_|Reference to a Cloudify deployment|string
|*typeName* +
_required_|Name of the associated DCAE service type|string
|*vnfId* +
_required_|Id of the associated VNF that this service is monitoring|string
|*vnfLocation* +
_required_|Location identifier of the associated VNF that this service is monitoring|string
|*vnfType* +
_required_|The type of the associated VNF that this service is monitoring|string
|===


[[_dcaeservicetype]]
=== DCAEServiceType

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*blueprintTemplate* +
_required_|String representation of a Cloudify blueprint with unbound variables|string
|*created* +
_required_|Created timestamp for this DCAE service type in epoch time|string(date-time)
|*owner* +
_required_|Name of the owner of this DCAE service type|string
|*selfLink* +
_optional_|Link.title is typeName|<<_link,Link>>
|*serviceIds* +
_optional_|List of service ids that are associated with this DCAE service type|< string > array
|*serviceLocations* +
_optional_|List of service locations that are associated with this DCAE service type|< string > array
|*typeName* +
_required_|Unique name for this DCAE service type|string
|*vnfTypes* +
_required_|List of VNF types associated with this DCAE service type|< string > array
|===


[[_dcaeservicetyperequest]]
=== DCAEServiceTypeRequest

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*blueprintTemplate* +
_required_|String representation of a Cloudify blueprint with unbound variables|string
|*owner* +
_required_||string
|*serviceIds* +
_optional_|List of service ids that are used to associate with DCAE service type. DCAE service types with this propery as null or empty means them apply for every service id.|< string > array
|*serviceLocations* +
_optional_|List of service locations that are used to associate with DCAE service type. DCAE service types with this propery as null or empty means them apply for every service location.|< string > array
|*vnfTypes* +
_required_||< string > array
|===


[[_inlineresponse200]]
=== InlineResponse200

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*items* +
_optional_||< <<_dcaeservicetype,DCAEServiceType>> > array
|*links* +
_optional_||<<_inlineresponse200links,InlineResponse200Links>>
|*totalCount* +
_optional_||integer(int32)
|===


[[_inlineresponse2001]]
=== InlineResponse2001

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*items* +
_optional_||< <<_dcaeservice,DCAEService>> > array
|*links* +
_optional_||<<_inlineresponse200links,InlineResponse200Links>>
|*totalCount* +
_optional_||integer(int32)
|===


[[_inlineresponse200links]]
=== InlineResponse200Links
Pagination links


[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*nextLink* +
_optional_||<<_link,Link>>
|*previousLink* +
_optional_||<<_link,Link>>
|===


[[_link]]
=== Link

[options="header", cols=".^3,.^11,.^4"]
|===
|Name|Description|Schema
|*params* +
_optional_||< string, string > map
|*rel* +
_optional_||string
|*rels* +
_optional_||< string > array
|*title* +
_optional_||string
|*type* +
_optional_||string
|*uri* +
_optional_||string
|*uriBuilder* +
_optional_||<<_uribuilder,UriBuilder>>
|===


[[_uribuilder]]
=== UriBuilder
_Type_ : object





