get_duplicate_nodes
const url = 'https://example.com/api/v1/nodes/duplicates';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/v1/nodes/duplicates \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”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
What Nodes ▸ Duplicates shows.
object
Groups of device nodes that look like one physical device. Confident groups first, at most
500 — total says how many there are.
One group of device nodes that look like one physical device.
object
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.
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.
What the members share, strongest first.
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
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.
The members that share it.
The shared value: the address, the serial number, the MAC address, the chassis or device id, or the name.
The member suggested to keep first, then the rest from the oldest registration.
One node in a group.
object
The monitored address.
When the node was added.
How many nodes name this one as their dependency parent.
The inventory folder; null ⇒ the tree root.
The member suggested to keep: the most depended-on, then the oldest. A suggestion only.
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.
A value too many nodes share to count as evidence.
object
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.
How many of the compared nodes share it.
How many values were not used.
How many device nodes were compared.
How many groups there are.
Of those, how many have an interface-address list. The poller reads it once an hour over SNMP when address discovery is on.
Of those, how many report a serial number. The poller reads it once an hour over SNMP.
Example
{ "groups": [ { "confidence": "confident", "contradictions": [ "serial_differs" ], "evidence": [ { "kind": "address" } ] } ], "ignored": [ { "kind": "address" } ]}No valid bearer token
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
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}Role lacks ManageConfig
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
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}This deployment has no write side (skeleton mode)
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
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}