Search Objects

Searches for objects matching specified criteria.

Request

HTTP Request

POST /node/api/objects/search

Permissions

run-bulks

Path parameters

No parameters required.

Body parameters

You can use any field in the Object model as the criterion.

Parameter Type Description

search

Object

Search criteria.

options

Object

Additional request options.

options.includeClientData

Boolean

Whether to include the client data in the response. false by default.

You can also use modifiers to specify the criteria further.

$in

The $in parameter allows you to specify an array of precise values. Objects whose specified field contains any of these values are returned in the response.

{
    "search": {
        "id": {
            "$in": [
                '639895add8f7281a28794ea4',
                '639895b9d8f7281a28794eea'
            ]
        }
    }
}

Numeric fields comparison

You can use the following expressions on the object’s numeric fields:

  • $gt — greater than;

  • $lt — less than;

  • $gte — greater than or equal to;

  • $lte — less than than or equal to.

{
    "search": {
        "updated": {
            "$gte": 1670234676700
        }
    }
}

Regular expressions

Use regular expressions to filter objects by their text fields.

{
    "search": {
        "name": {
            "$regex": "cpu",
            "$options": "i"
        }
    }
}

You can specify the following regular expression options in the $options field:

Options Descriptions

i

Ignore case.

Properties

Use $elemMatch modifier to search by specific fields of properties. You can see all fields on the Property Model page.

{
    "search": {
        "properties": {
            "$elemMatch": {
                "type_id": 8
            }
        }
    }
}

Request body

{
    "search": {
        <search criterion 1>,
        ...
        <search criterion n>
    },
    "options":{
        "includeClientData": true
    }
}

Response

This request returns an array of objects that match the specified search criteria.

Example

Request

The following examples show how to perform a case-insensitive search of all objects named "CPU":

  • Bash

  • JavaScript

  • NodeJS

  • Python

login=<...>
password=<...>
saymon_hostname=<...>
url=https://$saymon_hostname/node/api/objects/search

curl -X POST $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "search": {
        "name": {
            "$regex": "cpu",
            "$options": "i"
        }
    }
}
EOF
let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/objects/search";
let auth = "Basic " + btoa(login + ":" + password);

let headers = new Headers();
headers.append("Content-Type", "application/json");
headers.append("Authorization", auth);

let data = JSON.stringify({
    "search": {
        "name": {
            "$regex": "cpu",
            "$options": "i"
        }
    }
});

let requestOptions = {
    method: "POST",
    headers: headers,
    body: data
};

fetch(saymonHostname + path, requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log("error", error));
const http = require("http");

let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/objects/search";
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "POST",
    "hostname": saymonHostname,
    "headers": {
        "Authorization": auth,
        "Content-Type": "application/json"
    },
    "path": path
};

let req = http.request(options, function (res) {
    let chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        let body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

let data = JSON.stringify({
    "search": {
        "name": {
            "$regex": "cpu",
            "$options": "i"
        }
    }
});

req.write(data);
req.end();
import requests
import json

login = <...>
password = <...>
saymon_hostname = <...>
url = "https://" + saymon_hostname + "/node/api/objects/search"

body = {
    "search": {
        "name": {
            "$regex": "cpu",
            "$options": "i"
        }
    }
}

response = requests.request("POST", url, json=body, auth=(login, password))
print(response.text)

Response

[
    {
        "name": "CPU",
        "discovery_id": "example-CPU",
        "object_groups": [],
        "geoposition": [],
        "child_ref_ids": [],
        "child_link_ids": [],
        "child_ids": [],
        "parent_id": "5e21b85b308c3c66d64e07bc",
        "weight": 1,
        "tags": [],
        "last_state_update": 1583141090805,
        "updated": 1583916836283,
        "created": 1579268187099,
        "state_id": 7,
        "class_id": 4,
        "operations": [
            ...
        ],
        "properties": [
            {
                "name": "AgentId",
                "value": "5e21b85b308c3c66d64e07c8",
                "type_id": 8,
                "id": "5e21b85b308c3c66d64e07d5"
            },
            ...
        ],
        "manual_state": null,
        "owner_id": "5e21b752308c3c66d64e072c",
        "id": "5e21b85b308c3c66d64e07d2"
    },
    ...
]

See Also