API changes in Nagios XI 5.7


In Nagios XI versions prior to 5.7, there was an API issue as described below:

The JSON returned from the API returns inconsistent types depending on whether single or multiple results are returned.

As an example, requesting the status of a single host returns an object but requesting the status of multiple hosts returns an array of objects.

Single result (no array) 

{
   "recordcount": "1",
   "hoststatus": {
      "@attributes": {
         "id": "737359"
      },
      "instance_id": "1",
      "host_id": "5154",
      "name": "hosta"
   }
}

Multiple results are within an array

{
  "recordcount": "2",
  "hoststatus": [
    {
      "@attributes": {
        "id": "737359"
      },
      "instance_id": "1",
      "host_id": "5154",
      "name": "hosta"
    },
    {
      "@attributes": {
        "id": "737358"
      },
      "instance_id": "1",
      "host_id": "5153",
      "name": "hostb"
    }
  ]
}

This was due to the fact that the original results were being given in XML and converted to JSON for our API. The decision was made that the output should stay as an array no matter how many of the objects are returned.

The solution in Nagios XI 5.7+

Updated all data to be sent out as JSON and no longer gets turned into XML and then converted to JSON like it had before. This extra step was CPU intensive so this may actually improve the speed of the API on large systems.

When a single object is returned it will now return as an array of objects with just one object in it.

To Consider

Keep in mind that returned single objects will now be in an array. Also, there were some name changes in the API:

Changed the service_id to service_object_id in the API objects/servicestatus and host__id to host_object_id in the objects/hoststatus endpoint.



Article ID: 894
Created On: Tue, Feb 23, 2021 at 9:38 AM
Last Updated On: Tue, Feb 23, 2021 at 11:05 AM
Authored by: rspielman

Online URL: https://support.nagios.com/kb/article/api-changes-in-nagios-xi-5-7-894.html