コンテンツにスキップ

get_duplicate_nodes

GET
/api/v1/nodes/duplicates
curl --request GET \
--url https://example.com/api/v1/nodes/duplicates \
--header 'Authorization: Bearer <token>'

Groups of device nodes that look like one physical device registered more than once, with the evidence for each group and the member suggested to keep

Media typeapplication/json

What Nodes ▸ Duplicates shows.

object
groups
required

Groups of device nodes that look like one physical device. Confident groups first, at most 500 — total says how many there are.

Array<object>

One group of device nodes that look like one physical device.

object
confidence
required

confident when strong evidence joins the members and nothing in the group contradicts it; possible when only two kinds of weak evidence join them, or something contradicts it.

string
Allowed values: confident possible
contradictions
required

What says the members are not one device. Always empty on a confident group, because a contradiction always makes the group possible. A possible group can also have none, when only weak evidence joins it.

Array<string>
Allowed values: serial_differs model_differs
evidence
required

What the members share, strongest first.

Array<object>

One piece of evidence.

Strong kinds (address, serial, own_ip, arp_mac, lldp_chassis) are enough on their own. Weak kinds (own_ip_one_way, cdp_device_id, name) list a group only when two of them agree.

object
kind
required

One kind of evidence that two nodes are one device.

Ordered strong-first so the evidence a group lists reads from the most to the least convincing.

string
Allowed values: address serial own_ip own_ip_one_way arp_mac lldp_chassis cdp_device_id name
node_ids
required

The members that share it.

Array<string>
value
required

The shared value: the address, the serial number, the MAC address, the chassis or device id, or the name.

string
members
required

The member suggested to keep first, then the rest from the oldest registration.

Array<object>

One node in a group.

object
address
required

The monitored address.

string
created_at
required

When the node was added.

string format: date-time
dependents
required

How many nodes name this one as their dependency parent.

integer format: int64
group_id

The inventory folder; null ⇒ the tree root.

string | null format: uuid
model
string | null
node_id
required
string format: uuid
node_name
required
string
serial_number
string | null
suggested_keep
required

The member suggested to keep: the most depended-on, then the oldest. A suggestion only.

boolean
vendor
string | null
ignored
required

Values not used as evidence because more than 8 of the compared nodes share them (a shared monitored address always counts). The most widely shared first, at most 200.

Array<object>

A value too many nodes share to count as evidence.

object
kind
required

One kind of evidence that two nodes are one device.

Ordered strong-first so the evidence a group lists reads from the most to the least convincing.

string
Allowed values: address serial own_ip own_ip_one_way arp_mac lldp_chassis cdp_device_id name
nodes
required

How many of the compared nodes share it.

integer
value
required
string
ignored_total
required

How many values were not used.

integer
scanned
required

How many device nodes were compared.

integer
total
required

How many groups there are.

integer
with_address_list
required

Of those, how many have an interface-address list. The poller reads it once an hour over SNMP when address discovery is on.

integer
with_serial
required

Of those, how many report a serial number. The poller reads it once an hour over SNMP.

integer
Example
{
"groups": [
{
"confidence": "confident",
"contradictions": [
"serial_differs"
],
"evidence": [
{
"kind": "address"
}
]
}
],
"ignored": [
{
"kind": "address"
}
]
}

No valid bearer token

Media typeapplication/json

The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies undescribed — a client that has to guess the failure shape ends up parsing the success shape and reading undefined.

object
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

Role lacks ManageConfig

Media typeapplication/json

The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies undescribed — a client that has to guess the failure shape ends up parsing the success shape and reading undefined.

object
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

This deployment has no write side (skeleton mode)

Media typeapplication/json

The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies undescribed — a client that has to guess the failure shape ends up parsing the success shape and reading undefined.

object
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}