Skip to content

Object

Object is an entity within which a monitoring process is going on. Objects can receive and store metrics, have types (Classes), Properties, Owner, State, and more.

An object can represent:

  • a physical device (server, processor, router)
  • a program module (database, web server)
  • a higher-level element relating to business processes (service, platform)

Objects can have an unlimited number of child objects and parents. Objects form a hierarchy with unlimited number of levels.

Object Model

Field Type Description
id String
required
Object's ID.
name String
required
Object's name.
class_id String The ID of an object class.
child_ids Array<String> An array of object's child objects IDs.
child_link_ids Array<String> An array of object's child links IDs.
child_ref_ids Array<String> An array of object's child references IDs.
owner_id String The ID of a user who owns the object.
parent_id Array<String> The IDs of an object's parents.
discovery_id String Object's discovery ID. See a detailed description below.
properties Array<Property> An array of object's properties.
client_data String Object's client data. See a detailed description below.
state_id String The ID of an object state.
tags Array<Tag> An array of object's tags.
background String Object's background image.
created Integer A timestamp when the object was created.
geoposition Array<Float> Object's position on a map. It's specified as an array of two float numbers, where the first number is longitude, the second one is latitude.
geopositionRadius Integer The radius of an object's area displayed on a map.
last_state_update Integer A timestamp when object's state was last updated.
manual_state ManualState Object's manual state.
operations Array<Operation> An array of object's operations.
updated Integer A timestamp when the object was last updated.
weight Integer Object's weight.
_version Integer Version of the object. Version increases by 1 every time any field changes in an object.

Root Object

There is always Object with id:1 and class_id:1. It's called Root Object. It can be modified, but not deleted.

{
  "id": 1,
  "class_id": 1,
  "name": "Root",
  "parent_id": 0,
  ...
}

Child Object

Object can have one or several Child Objects.

{
  "id": 1,
  "name": "Root",
  "child_ids": [
    2341,
    "56778c7251ed68d360e9e8fa"
  ],
  ...
}

Parent Object

Object can have one or several Parent Objects.

{
  "id": "5b0e9a961b77787888970d8c",
  "name": "Cat",
  "parent_id": [
    1011,
    "5ac73d88edff0739fbd963de"
  ],
  ...
}

Multi-parent and Reference

You can set several parents for a single object. This is called multi-parent

SAYMON object hierarchy can be compared to a file system:

  • a multi-parent is comparable to a hard link;
  • a Reference is comparable to a symbolic or soft link.

When you delete Object with multi-parent all other entries of this Object are still remain in SAYMON.

When you delete Object with Reference all References are deleted.

When you delete Reference, nothing happens with Object.

Discovery ID

This field can be used along with the Create Object method. If discovery ID is specified in a request body, the method works as follows: if an object with the specified discovery ID doesn't exist, a new object with this ID will be created. If an object with the specified discovery ID already exists, the object's body will be updated. Thus, this field can be used as an external ID created by the user and utilized thereafter to work with an object.

Any method, which uses the object's ID, can also use the object's discovery ID instead. To do that it's necessary to replace <id> with discovery id:<discovery_id> in the request URL.

Example

Clone the object with id = 6013d0c604ab1a73eda738f5 and discovery id = Qwerty:

by ID: http://<saymon_hostname>/node/api/objects/6013d0c604ab1a73eda738f5/clone

by discovery ID: http://<saymon_hostname>/node/api/objects/discovery_id:Qwerty/clone

Warning

Discovery ID must not contain the / symbol.

Discovery ID is case-sensitive.

Client data

Client data is a set of fields that correspond to various object's UI settings. The fields are specified in the JSON format and stored on a server as a string. The table below contains a description of all fields from the set:

Field Type Description
charts Array<Array<String>> An array of plots. Each plot is stored as an array, the first element of which is the ID of the plot, the second one is a mathematical formula for metrics to be displayed on the plot.
collapseSections Map<String, Boolean> A collection of object's metrics names whose plots should be collapsed. Each record of the collection is a pair, the first element of which is a metric's title, the second one is a boolean value. If the value set to true, the corresponding plot will be collapsed. See a list of all possible sections' names in the Sections' Names article.
custom_style.height Integer Object's height (in pixels). Should be specified with the px suffix.
custom_style.left Integer Object's margin from the left (in pixels). Should be specified with the px suffix.
custom_style.top Integer Object's margin from the top (in pixels). Should be specified with the px suffix.
custom_style.width Integer Object's width (in pixels). Should be specified with the px suffix.
custom_style.zIndex Integer Object's Z-index. The index specifies how overlapping objects should be displayed in the standard view. For example, if there are two overlapping objects, an object with a greater Z-index will be shown above the other object with a smaller Z-index. In other words, objects with greater Z-index are shown above objects with smaller Z-index.
headlinePropIds Array<String> An array of properties' keys whose values should be displayed on an object's headline.
joinedGraphs Array<String> An array of plots' IDs displayed on a joined plot.
nonPinnedSections Map<String, Boolean> A collection of object's sections names that should be unpinned. Each record of the collection is a pair, the first element of which is a section name, the second one is a boolean value. If the value is set to true, the corresponding section will be unpinned. See a list of all possible sections' names in the Sections' Names article.
widgets Array<Widget> An array of widgets configured for the object.