Addresses seen on the network that Yagra does not monitor.
const url = 'https://example.com/api/v1/discovered-endpoints';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/discovered-endpoints \ --header 'Authorization: Bearer <token>'Built from the ARP / IPv6-neighbour caches of the nodes that are monitored, so an endpoint appears here only if some monitored router has spoken to it. Requires the ARP walk to be enabled (Settings ▸ System settings ▸ Discovery walks); with it off the list is empty, which is an answer rather than an outage.
summary.truncated_nodes > 0 means at least one router’s cache exceeded its row budget and this
list is a sample, not a complete inventory of the segment.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Only endpoints seen by this node.
Include endpoints that have since become monitored nodes. Default false.
Responses
Section titled “Responses”One page of unmonitored endpoints, most recently seen first
One page of discovered endpoints, most recently seen first.
object
One address the fleet has resolved on the wire but does not monitor.
object
When it was first seen anywhere in the fleet (RFC 3339).
The endpoint’s address.
When it was last confirmed still present (RFC 3339).
Its hardware address, lowercase colon-separated hex; null for an incomplete ARP entry.
The node this address became, once it is monitored; null while it is still unmonitored.
The SNMP ifIndex it was resolved on — the port it is behind.
Which monitored node resolved it; null once that node has been deleted.
How much of the fleet’s ARP data this list was built from.
object
How many nodes have reported an ARP/ND cache at all.
Total endpoints observed across the fleet, before dedup and before the unmonitored filter.
How many of those hit a cap, making their contribution a sample rather than a total.
Examplegenerated
{ "endpoints": [ { "first_seen": "example", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "ip": "example", "last_seen": "example", "mac": "example", "promoted_node_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "via_ifindex": 1, "via_node": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" } ], "next": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "last_seen": "example" }, "summary": { "nodes_reporting": 1, "observed_total": 1, "truncated_nodes": 1 }}Before_last_seen and before_id must be given together, and before_last_seen must be RFC 3339
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" }}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 View
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" }}Inventory storage is unavailable (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" }}