opCharts Inventory API

opCharts Inventory API

This opCharts API provides access to opCharts inventory data in a JSON format.

The Inventory API is available in opCharts from version 4.7.0

Authentication is required to access all methods below. See opCharts REST API Reference.

Public API for opCharts Inventory "http[s]://server/omk/opCharts/v2/inventory"

We can view opCharts Inventory below using these endpoints - http[s]://server/omk/opCharts/v2/inventory

API Routes

Request Method

Operation

URL Example

id required

Notes

Request Method

Operation

URL Example

id required

Notes

GET

read list 

/server/omk/opCharts/v2/inventory

n

Returns a list of all the inventory ids.

Paginated.

GET

read one 

/server/omk/opCharts/v2/inventory/id

y

Returns the details of the requested inventory record.











GET

read list 

/server/omk/opCharts/v2/inventory/subconcepts

n

Returns a list of all the inventory subconcepts.

GET

read list

/server/omk/opCharts/v2/inventory/subconcepts/subconcept

y

Returns a list of all the inventory ids for the given subconcept.

Paginated.











GET

read list 

/server/omk/opCharts/v2/nodes/node_uuid/inventory/subconcepts

n

Returns a list of all the inventory subconcepts for the given node_uuid.

GET

read list 

/server/omk/opCharts/v2/nodes/node_uuid/inventory/subconcepts/subconcept

y

Returns the list of inventory data for the given node_uuid and subconcept.

Paginated.

Request Modifiers (query parameters)

The properties request modifier tells opCharts which properties you would like listed, query limits the requested resources to only those that match all criteria given. This collection can paginated, it is also limited to 25 results by default (this could be subject to change in future opCharts versions) use the limit query parameter to request more nodes

Not all requests will use all request modifiers.

Query Parameter

Possible Values

Query Parameter

Possible Values

properties

Array of property names. If provided only the properties specified will be returned (instead of the whole document).

eg: properties=["configuration.customer", "configuration.group"]

By default the nodes UUID is returned by default if no properties are given

page

(int) Which page of the requested document to be returned, from 1 .. n, defaults to 1

limit

(int) How many results are returned per page, defaults to 25

filter

Array of key=value pairs, but coded in an array. Applied to the list of results in the order they are given. If an application key is provided that will be applied first.

eg: filter={"configuration.group":"NMIS8","data.index": "196609"} (which is "configuration.group"="NMIS8" AND "data.index"="196609" )

for a string, if it starts with regex: or iregex: then a case-sensitive or case-insensitive regular expression match is used.

eg: filter={"node_name":"iregex:Switch"} to find all the nodes with switch or SWITCH in their name.

sort

1 | -1 : sort the response with id ascending or descending.

redact

0 | 1 : redact the information in configuration.
** works only if you have MongoDB 4.2 and above and set db_use_v42_features => 1 in opCommon.json

Examples of how to use the request modifiers can be found in the response blocks below.  In general, the queries will look something like this: 





GET of opcharts/v2/inventory for inventory List

GET /omk/opCharts/v2/inventory

You will get a list of the first 25 inventory objects in your database.

You can use Request Modifiers (see above) for filtering, pagination, and selecting properties.

Successful Response

HTTP Status

Body

Description

HTTP Status

Body

Description

200 OK

Possibly empty JSON array of objects

Each array element is a JSON object with the properties selected by the Request Modifiers (see above).

Unsuccessful Response

HTTP Status

Body

Description

HTTP Status

Body

Description

400 Bad Request

JSON object with an error property

The error property is 1 and the message property contains an explanation of what went wrong with your request, e.g. if you request a non-existent object.

401 Unauthorized

JSON object with an error property

You are not authenticated.

403 Forbidden

JSON object with an error property

You are not authorized.

404 Not Found

JSON object with an error property

You are authenticated but not authorised to view this object.

404 Not Found

JSON object with an error property

The error property is 1 and the message property contains an explanation of what went wrong with your request, e.g. if you request a non-existent object.



Example

GET HTTP://server/omk/opCharts/v2/inventory.json Output :- List of first 25 inventory objects ("id" and "node_uuid") sorted by node_name in ascending order. [ { "id": "63195a0341073d2dd339ce47", "node_uuid": "08098577-5d8c-11e9-9614-8a6323fe4840" }, { "id": "63195a0341073d2dd339ce5d", "node_uuid": "08098577-5d8c-11e9-9614-8a6323fe4840" }, { "id": "63195a0341073d2dd339ce74", "node_uuid": "08098577-5d8c-11e9-9614-8a6323fe4840" }, { "id": "63195a0341073d2dd339ce82", "node_uuid": "08098577-5d8c-11e9-9614-8a6323fe4840" }, { "id": "63195a0341073d2dd339ce90", "node_uuid": "08098577-5d8c-11e9-9614-8a6323fe4840" }, { "id": "63195a0341073d2dd339ceba", "node_uuid": "08098577-5d8c-11e9-9614-8a6323fe4840" },  

Similar requests and descriptions with inventory

Request

Response

Request

Response

GET http://server/omk/opCharts/v2/inventory.json?limit=50


First 50 inventory records sorted by node_name

("id" and "node_uuid")

GET http://server/omk/opCharts/v2/inventory.json?limit=50&page=2

Next 50 inventory records sorted by node_name

("id" and "node_uuid")

GET http://server/omk/opCharts/v2/inventory.json?limit=50&properties=["node_name"]

First 50 inventory records sorted by node_name

("id" , "node_uuid", "node_name")

GET http://server/omk/opCharts/v2/inventory.json?limit=50&page=2&properties=["data"]

Next 50 inventory records sorted by node_name

("id" , "node_uuid", "data")

GET http://server/omk/opCharts/v2/inventory.json?limit=50&properties=["node_name"]&filter={"data.ifIndex":3}

First 50 inventory records sorted by node_name, filtered by inventory.data.ifIndex => 3

("id" , "node_uuid", "node_name")

GET http://server/en/omk/opCharts/v2/inventory.json?properties=["data.ifIndex","data.ifDescr","node_name","description"]&filter={"data.ifIndex":1}

First 25 inventory records sorted by node_name displaying 6 properties

[
  {
    "data": {
      "ifDescr": "lo",
      "ifIndex": 1
    },
    "description": "lo",
    "id": "64250e8ef82d4b6e59e888d9",
    "node_name": "lab-primary1",
    "node_uuid": "f2163325-a2b6-4d9a-8705-0dc0397ee7e3"
  },
  {
    "data": {
      "ifDescr": "LOOPBACK",
      "ifIndex": 1
    },
    "description": "LOOPBACK",
    "id": "64cc4b8a5e13cceca7d030f7",
    "node_name": "SASINTEL_MARINA_PARK_P5_UPS01",
    "node_uuid": "9ac2e0ec-db2c-455a-9917-0471acaae231"
  },

 . . .
]

GET of opCharts/v2/inventory/id 

GET /omk/opCharts/v2/inventory/id

You will get the details of the given inventory object.

Successful Response

HTTP Status

Body

Description

HTTP Status

Body

Description

200 OK

JSON object

A record with the details of the Inventory

Unsuccessful Response

HTTP Status

Body

Description

HTTP Status

Body

Description

401 Unauthorized

JSON object with an error property

You are not authenticated.

403 Forbidden

JSON object with an error property

You are not authorized.

404 Not Found

JSON object with an error property

The error property is 1 and the message property contains an explanation of what went wrong with your request, e.g. if you request a non-existent object.

Properties

Property

Description

Example

id

A globally unique ID

65a5b8b843c6b8c138bc9cab

concept

The concept for this inventory

"device"

cluster_id

The id of the NMIS poller server for the associated node

"660f29ae-f150-4119-bf04-cd9296852449"

configuration





data

Some inventory data is stored in "data"

{
    "hrCpuLoad": 100,
    "hrDeviceDescr": "GenuineIntel: Intel(R) Xeon(R) CPU @ 2.20GHz",
    "hrDeviceType": "1.3.6.1.2.1.25.3.1.3",
    "index": "196609"
}

data_info

Some meta-data about "data" is stored in "data_info"



dataset_info

Some meta-data about time-series data related to this inventory is stored in "dataset_info"



description



"GenuineIntel: Intel(R) Xeon(R) CPU @ 2.20GHz"

enabled



0 or 1

expire_at





historic



0 or 1

lastupdate

The unix timestamp that this inventory record was last updated. 

705359544.17113

node_name

The uuid of the associated node

"vrouter_host"

node_uuid

The uuid of the associated node

"a8ac3d79-aa7c-496f-ae19-f6df04c58a21"

path

array 

response

server_name

The name of the NMIS poller server for the associated node

lab_poller1

subconcepts

An array of the subconcepts for this inventory record

[ "hrsmpcpu" ]

storage

Describes the storage for time-series data for this inventory item.



Example

http://server/omk/opCharts/v2/inventory/65a5b8b843c6b8c138bc9cab.json
{
  "cluster_id": "660f29ae-f150-4119-bf04-cd9296852449",
  "concept": "device",
  "configuration": {
    "group": "Lab_Servers"
  },
  "data": {
    "hrCpuLoad": 100,
    "hrDeviceDescr": "GenuineIntel: Intel(R) Xeon(R) CPU @ 2.20GHz",
    "hrDeviceType": "1.3.6.1.2.1.25.3.1.3",
    "index": "196609"
  },
  "data_info": [
    {
      "display_keys": [],
      "enabled": 0,
      "subconcept": "hrsmpcpu"
    }
  ],
  "dataset_info": [
    {
      "datasets": [
        "hrCpuLoad"
      ],
      "subconcept": "hrsmpcpu"
    }
  ],
  "description": "GenuineIntel: Intel(R) Xeon(R) CPU @ 2.20GHz",
  "enabled": 1,
  "expire_at": "2024-03-27T02:25:01.445Z",
  "historic": 0,
  "id": "65a5b8b843c6b8c138bc9cab",
  "lastupdate": 1705359544.17113,
  "node_name": "vrouter_host",
  "node_uuid": "a8ac3d79-aa7c-496f-ae19-f6df04c58a21",
  "path": [
    "660f29ae-f150-4119-bf04-cd9296852449",
    "a8ac3d79-aa7c-496f-ae19-f6df04c58a21",
    "device",
    196609
  ],
  "path_keys": [
    "index"
  ],
  "server_name": "localhost",
  "storage": {    "hrsmpcpu": {      "rrd": "/nodes/vrouter_host/health/hrsmpcpu196609.rrd"    }  },  "subconcepts": [    "hrsmpcpu"  ]}