コンテンツにスキップ

get_subnet_overlaps

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

Address ranges that more than one site carries — the same range at two sites, or one site’s range inside another’s — with the exclusion rules and what each excludes. A caller scoped to some folders is told how many sites it cannot see, never which

Media typeapplication/json

What Nodes ▸ Subnet overlaps shows.

object
counts
required

How many overlaps the caller can see, by status.

object
excluded
required
integer format: int32
intentional
required
integer format: int32
open
required
integer format: int32
nodes_total
required

Devices the caller may see.

integer format: int32
nodes_truncated
required

Of those, how many address lists were cut at the per-device cap.

integer format: int32
nodes_with_addresses
required

Of those, how many have reported their interface addresses at all. A device with no SNMP, or whose address walk has never succeeded, contributes nothing — so no overlaps is not the same as none unless this equals nodes_total.

integer format: int32
overlaps
required

Open first, then intentional, then excluded; inside each, same address, nested, then same range, and more sites first. At most 2,000 — counts says how many there are.

Array<object>

One range more than one site carries.

object
excluded_by
required

What excluded it. Empty unless status is excluded.

Array
One of:

A /30, /31, /126 or /127 carried by exactly two devices at two addresses: the link between two sites. Built in; no rule turns it off.

object
kind
required
string
Allowed values: link
hidden_sites
required

Sites the caller may not see. Their names and devices are withheld (ADR-014).

integer format: int32
hint
One of:
null
inner
required

For nested: the ranges inside it at other sites, at most [INNER_MAX].

Array<string>
inner_count
required
integer format: int32
key
required

Stable identity, used to acknowledge it: same:<range> or nested:<outer range>. The same range keeps its key whether an address is shared or not, so an acknowledgement survives that changing. within:<range> when outer_withheld — a scoped caller cannot acknowledge.

string
kind
required

How two sites’ ranges meet.

string
Allowed values: same_address nested same_range
node_count
required

How many distinct devices carry it (visible ones only, after the caller’s scope).

integer format: int32
note

The acknowledgement’s note, when status is intentional.

string | null
outer_withheld
required

For nested: the outer range is carried only at sites the caller may not see, so it is not named (ADR-014).

boolean
place_count
required
integer format: int32
places
required

Up to [PLACES_MAX] places, ordered by site, device, then port.

Array<object>

One place a range was seen: a device, the port, and the address with its length.

object
address
required

The address as configured, address/length.

string
if_alias
string | null
if_name
string | null
ifindex
required
integer format: int32
node_id
required
string format: uuid
node_name

Filled by the caller.

string | null
site_id

The site: the nearest folder of type Site above the device, else its own folder. null ⇒ the tree root.

string | null format: uuid
site_name

Filled by the caller.

string | null
subnet
required

The range it forms, network/length.

string
shared_addresses
required

For same_address: the addresses configured at more than one site.

Array<string>
site_count
required

How many distinct sites carry it (a scoped caller’s hidden ones included).

integer format: int32
status
required

Where an overlap stands after the exclusions and acknowledgements are applied.

string
Allowed values: open intentional excluded
subnet
required

The range; for nested, the outer one — or, when outer_withheld, the narrowest range covering the caller’s own inner ranges.

string
rules
required

Every exclusion rule, built-in first.

Array<object>

One exclusion rule.

object
builtin
required

Built in: can be switched off, not edited or deleted.

boolean
enabled
required
boolean
excluded_count
required

How many overlaps this rule currently excludes, across the deployment.

integer format: int32
id
required
string format: uuid
note
required
string
port_text

Places on a port whose name or description carries this as whole words (case-insensitive; a word may be followed by digits, so dialer matches Dialer1 and ha does not match Port-channel1). null ⇒ any port.

string | null
range

Places inside this range match. null ⇒ any range.

string | null
reason
required

Why an operator says a range is expected to repeat. Stored in subnet_overlap_rules.reason.

string
Allowed values: wan redundancy shared_line management other
subnets_checked
required

Distinct ranges compared, across the whole deployment.

integer format: int32
Example
{
"overlaps": [
{
"excluded_by": [
{
"kind": "link"
}
],
"hint": {
"kind": "wan"
},
"kind": "same_address",
"status": "open"
}
],
"rules": [
{
"reason": "wan"
}
]
}

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 the View permission

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"
}
}