ServiceInventory API (4.1.0)

Download OpenAPI specification:Download

About the ONAP Service Inventory API

The Service Inventory API is based on a subset of the TM Forum 638 Service Inventory API.

API Overview

General Description

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:

  • ServiceCreationNotification
  • ServiceAttributeValueChangeNotification
  • ServiceRemoveNotification

Relationship and Dependencies

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.

API Structure and Approach

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.

Getting Started with the API (Hello World)

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/

SDK quick intro

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.

How to start the client side implementation

  • Code generation, is available via the Generate Client option in the swagger editor. Client stubs can be generated in multiple languages, for example java, go, python etc. These Client stub code can be incorporated in the Application you wish to access the Service Inventory API from.

How to start the server side implementation

  • Not applicable, the service side for this API will be the NBI container running the External API Framework Springboot application.

API Description

Includes summary of information drawn from API definitions in OpenAPI / Swagger files

Resource Endpoint / Resource Quick Reference

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.

Data Schema

Main API Entities

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.

Payload data structures

If any, describe the appropriate data structures that are included within payload of the API.

Not applicable

Security on the API

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

Response Codes

The meaning of Status Codes & Errors

See response codes for each API resource in the API section below

Rate Limits and Thresholds

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.

Validation constraints

Describe any behavioral and structural validation constraints

Not applicable

Assumptions

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.

API Interactions and Flows

Interaction Examples

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

Call ONAP to discover what available services it has in the service inventory by listing them

curl -X GET "http://serverRoot:30274/nbi/api/v4/service/" -H "accept: application/json;charset=utf-8"

Using the id returned from the list of Service instances, drill into any specific Service instance you want to view using

curl -X GET "http://serverRoot:30274/nbi/api/v4/service/0ec83a1f-51e7-44e7-b773-3f37ddb937cd" -H "accept: application/json;charset=utf-8"

Example Response Values

{"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"}

Service

Provided by NBI

List services

This operation list service entities. Attribute selection is restricted. fields attribute may be used to filter retrieved attribute(s) for each service

query Parameters
relatedParty.id
string
serviceSpecification.id
string
serviceSpecification.name
string
id
string
fields
string

Responses

200

Ok

get /service
http://serverRoot:30274/nbi/api/v4/service
https://serverRoot:30274/nbi/api/v4/service

Response samples

Content type
application/json;charset=utf-8
Copy
Expand all Collapse all
[
  • {
    }
]

Retrieve a service

This operation retrieves a service entity. Attribute selection is enabled for all first level attributes.

path Parameters
id
required
string

Responses

200

Ok

get /service/{id}
http://serverRoot:30274/nbi/api/v4/service/{id}
https://serverRoot:30274/nbi/api/v4/service/{id}

Response samples

Content type
application/json;charset=utf-8
Copy
Expand all Collapse all
{
  • "id": "string",
  • "href": "string",
  • "name": "string",
  • "type": "string",
  • "state": "string",
  • "@type": "string",
  • "@baseType": "string",
  • "@schemaLocation": "string",
  • "serviceSpecification":
    {
    },
  • "characteristic":
    [
    ],
  • "supportingResource":
    [
    ],
  • "relatedParty":
    [
    ]
}

Notification

provided by subscriber, which MUST has been registered by creating a Hub ressource on NBI

NBI will send notification to this operation provided by subscribers

Request Body schema: application/json;charset=utf-8
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

Responses

201

Created

post /notification
http://serverRoot:30274/nbi/api/v4/notification
https://serverRoot:30274/nbi/api/v4/notification

Request samples

Content type
application/json;charset=utf-8
Copy
Expand all Collapse all
{
  • "eventId": "string",
  • "eventDate": "2020-02-28T17:55:07Z",
  • "eventType": "ServiceCreationNotification",
  • "event":
    {
    }
}

Response samples

Content type
application/json;charset=utf-8
Copy
Expand all Collapse all
{
  • "eventId": "string",
  • "eventDate": "2020-02-28T17:55:08Z",
  • "eventType": "ServiceCreationNotification",
  • "event":
    {
    }
}