The Service Inventory API is based on a subset of the TM Forum 638 Service Inventory API.
This Service Inventory API is used to retrieve the Service Instances from the ONAP inventory. As Services are ordered from ONAP via the Service Order API, the Service Inventory API allows external systems such as the Business Support Systems (BSS) to discover the Services that have been created in the ONAP Inventory.
The Service Design Center (SDC) of ONAP allows for the creation of Services that can be orchestrated by ONAP. Once a Service from the Catalog is ordered, the ONAP Service Orchestrator will create a Service Instance within the AAI of ONAP. This API allows a representation of the Service Inventory in TMF 638 format. The Service Inventory API also supports inventory notifications to external listeners. A List of available subscription for serviceInventory notifications, see /hub resources for more information:
This Service Inventory API is related to the TM Forum 638 Service Inventory API and also to MEF LSO LEGATO Service Inventory API.
This API takes a subset of the Service Inventory API, namely the Service resource, and maps this standard resource to the ONAP AAI Service Instance. By doing this we allow a well known, standardized JSON REST representation of the Service Instances available in ONAP to be visible by external systems.
The Service Inventory API can be used to get the details of a specific ONAP Service Instance, or can be used to search/list the Service Instances that are in the ONAP AAI.
The Service Inventory API is available via two schemes, http and https. For interacting with the API the simplest method is via http. To interact with the this API via https, your Client would be required to load the neccessary https certificate.
The default installation of ONAP via OOM, will configure the use of two Node ports for External APIs. NodePorts are used to allow client applications, that run outside of Kubernetes, access to ONAP components deployed by OOM. For this Service Inventory API, the External API Framework has a http Node port of 30274. For https, the Node port is 30292.
From outside ONAP, a client can interact with External API by first getting the IP that the NBI docker container is running on, and then using the appropriate nodeport according to the access scheme. For example to access this Service Inventory API to retrieve a list of all Service Instances available in ONAP you can use http method GET to http://{nbi_ip}:30274/nbi/api/v4/service/
There are many tools that can be used to view and edit this swagger file like swagger editor, Atom and senya. For example this swagger file can be loaded into https://editor.swagger.io/. This UI acts both as an online editor and viewer.
Includes summary of information drawn from API definitions in OpenAPI / Swagger files
GET /service/ : This operation returns a list service instances from AAI
GET /service/{id} : This operation returns the specific service instance associated with this id. Note the id maps to the service-instance-id of the service-instance object in AAI.
Describe the major entities used in the API
The main entity of the API is the Service resource. This entity is the top level entity of the API, and is returned as either a single instance when queried with id, or as JSON arroy of Service entities when queried as a list.
The major child enties are relatedParty which points to the Customer who ordered the Service. The serviceSpecification which points to the Service template in SDC Catalog that was used to create this service instance.
If any, describe the appropriate data structures that are included within payload of the API.
Not applicable
Authentication; Authorization; Credentials/access token; etc.
https certificate required if using https. No authentication on http requests.In production this API should be behind an API Gateway with the necessary authentication
The meaning of Status Codes & Errors
See response codes for each API resource in the API section below
Requests per unit time allowed; Pagination
No rate limits or thresholds, in production this API should be behind an API Gateway with the necessary limits.
Describe any behavioral and structural validation constraints
Not applicable
For example, any Pre/Post conditions
For this API to function and return Service Instances, SDC is required to be running and Service models designed in the SDC catalog that have been ordered and instantiated by SO in AAI.
Illustrate sequence of client calls to this API, possibly based on Use Cases, presented with diagrams, tables, etc
The Service Inventory API flow of use can generally follow the sequence below
curl -X GET "http://serverRoot:30274/nbi/api/v4/service/" -H "accept: application/json;charset=utf-8"
curl -X GET "http://serverRoot:30274/nbi/api/v4/service/0ec83a1f-51e7-44e7-b773-3f37ddb937cd" -H "accept: application/json;charset=utf-8"
{"id":"c96fb8ec-8552-4956-8a8d-65680aaa57cc","name":"Service_1234","@type":"serviceONAP","supportingResource":[],"serviceSpecification":{"id":"462f84e5-f0e5-44c5-ab95-38fb4bf77064","name":"CS Template Name","invariantUUID":"88dcb2f0-085b-4548-8b93-0882e37d25d8","@type":"ONAPservice"},"state":"active","relatedParty":{"role":"ONAPcustomer","id":"CustomerId1"},"type":"service-instance"}
This operation list service entities. Attribute selection is restricted. fields attribute may be used to filter retrieved attribute(s) for each service
relatedParty.id | string |
serviceSpecification.id | string |
serviceSpecification.name | string |
id | string |
fields | string |
Ok
[- {
- "id": "string",
- "name": "string",
- "serviceSpecification": {
- "id": "string",
- "name": "string"
}, - "relatedParty": {
- "id": "string",
- "role": "string"
}
}
]
This operation retrieves a service entity. Attribute selection is enabled for all first level attributes.
id required | string |
Ok
{- "id": "string",
- "href": "string",
- "name": "string",
- "type": "string",
- "state": "string",
- "@type": "string",
- "@baseType": "string",
- "@schemaLocation": "string",
- "serviceSpecification": {
- "id": "string",
- "href": "string",
- "name": "string",
- "version": "string",
- "@referredType": "string",
- "@schemaLocation": "string",
- "invariantUUID": "string"
}, - "characteristic": [
- {
- "name": "string",
- "valueType": "string",
- "value": {
- "@type": "string",
- "@schemaLocation": "string",
- "serviceCharacteristicValue": "string"
}
}
], - "supportingResource": [
- {
- "id": "string",
- "href": "string",
- "role": "string",
- "name": "string",
- "@referredType": "string",
- "@schemaLocation": "string",
- "status": "string",
- "modelInvariantId": "string",
- "modelVersionId": "string",
- "modelCustomisationId": "string"
}
], - "relatedParty": [
- {
- "id": "string",
- "href": "string",
- "role": "string",
- "@referredType": "string"
}
]
}
provided by subscriber, which MUST has been registered by creating a Hub ressource on NBI
eventId required | string |
eventDate required | string <date-time> |
eventType required | string (eventType) Enum: "ServiceCreationNotification" "ServiceAttributeValueChangeNotification" "ServiceRemoveNotification" The Event Type |
event required | object (ServiceInventoryEvent) Structure for a service inventory event notification |
Created
{- "eventId": "string",
- "eventDate": "2020-02-28T17:55:07Z",
- "eventType": "ServiceCreationNotification",
- "event": {
- "id": "string",
- "href": "string",
- "name": "string",
- "type": "string",
- "state": "string",
- "relatedParty": {
- "id": "string",
- "href": "string",
- "role": "string",
- "@referredType": "string"
}
}
}
{- "eventId": "string",
- "eventDate": "2020-02-28T17:55:08Z",
- "eventType": "ServiceCreationNotification",
- "event": {
- "id": "string",
- "href": "string",
- "name": "string",
- "type": "string",
- "state": "string",
- "relatedParty": {
- "id": "string",
- "href": "string",
- "role": "string",
- "@referredType": "string"
}
}
}