One folder level of the network map: the folder's own linked nodes, each subfolder as one box with its subtree's counts, links between the same two things bundled into one edge, and a stub for every place links leave the level.
const url = 'https://example.com/api/v1/topology/map';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/topology/map \ --header 'Authorization: Bearer <token>'Omit group for the whole network. A group-scoped caller sees their visible folders, with the
roots of their scope directly under the whole network, and only links whose both ends are
visible to them. A level with more than node_limit linked nodes or edge_limit edges answers
overflow: true with its boxes and no nodes or edges.
A Site folder, and every folder beneath one, is drawn flat (flattened: true): its subfolders
are not boxes, every node in its subtree is drawn and carries the folders down to the one it is
filed in (folder_path). A link to another folder of the same site leaves as a stub for the far
node itself, since the site draws it. A flat drawing over the bounds falls back to boxes.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”The folder to draw. Omit for the whole network.
Responses
Section titled “Responses”One level of the network map
One folder level of the network map.
object
Its ancestors, outermost first (the level itself is not included).
A folder named on the map: the level itself or one of its ancestors.
object
When the connectivity graph was last derived (RFC 3339), or null before the first run.
Every node directly in this folder, linked or not — on a flattened level, every node in
the subtree.
How many bundled edges the level has (also when overflow emptied edges).
The most edges a level draws.
Every link between the same two things on this level, drawn as one line.
object
One end of a map edge. id is a node id for node, a folder id for folder, and the stub’s
own id for external.
object
What one end of a map edge is: a node on this level, a subfolder’s box, or a stub for something outside the level.
One end of a map edge. id is a node id for node, a folder id for folder, and the stub’s
own id for external.
object
What one end of a map edge is: a node on this level, a subfolder’s box, or a stub for something outside the level.
How many links the bundle holds (members lists at most 50).
Stable id, built from the two ends.
The links, strongest evidence first.
One link inside a bundled edge, oriented so a_node sits at the edge’s a end.
object
The strongest evidence behind this link.
The subnet behind a shared-subnet link.
The strongest of sources.
Every kind of evidence behind any member.
The level is a Site folder or lies beneath one, so its subfolders are not boxes: every node
in the subtree is drawn, tagged with its folder_path. false when the flat drawing would
exceed the bounds, in which case the level falls back to boxes.
Its subfolders, each drawn as a box (empty on a flattened level).
A subfolder drawn as one box, with its whole subtree’s tally (visible nodes only).
object
Those nodes, by state.
object
The folder’s type key (site, region, …).
How many nodes the subtree holds.
Direct nodes with no link on this level: counted, not drawn.
Of those, how many have a link on this level.
The most linked nodes a level draws.
Its own nodes that have a link on this level — on a flattened level, every such node in
the subtree.
A node drawn on the level that has at least one link there. On an ordinary level it sits
directly in the level’s folder; on a flattened level it may sit anywhere in the subtree.
object
The node’s role is access_point — one imported from its wireless controller, a Meraki
MR, or a device whose profile is classified Wireless AP. The map draws it as an
access-point symbol under the device it hangs off.
On a flattened level, the folders between the level and the node, outermost first, ending
with the one the node is filed in; empty when it sits directly in the level’s own folder
(always empty on an ordinary level).
A folder named on the map: the level itself or one of its ancestors.
object
What the node does in the network, which decides its row on the map (ADR-191 Inc.6).
Why it was given that role.
Upstream node blamed for this node’s alert (dependency suppression), if any.
The current state of a monitored node or check.
How many subnets the node has an address in, from its last address walk; null when no
walk has been recorded.
The level is too large to draw: nodes, stubs and edges are empty, the boxes remain.
The places links leave the level for.
Where links leave the level: a node or a folder outside it.
object
The node or folder the stub stands for.
What a stub stands for: one node, or a folder holding the far ends.
The first level on which both ends are visible; open it to see where the links go.
null is the whole network.
How many subfolders sit directly in it — on a flattened level too, where none is a box.
What that run observed but did not turn into a link — the same counts /topology/links
carries, for the whole network rather than this level. All zero before the first run.
object
Adjacency rows whose management address matched more than one node, so no link could be attributed without guessing which.
Links produced from a BGP peering session.
BGP peers that matched a monitored node but sit on no network the reporting node terminates, so the session is not evidence of a link between them. The normal reading is iBGP between loopbacks; a number that stays at zero on a network running iBGP means the reporting node’s interface addresses have not been observed.
Links produced from a CDP adjacency.
Addresses claimed by two or more nodes — a shared virtual IP, or a duplicate-address misconfiguration.
Links whose strongest evidence is shared-subnet membership.
Links produced from an LLDP adjacency.
Links produced from an OSPF neighbour relationship.
Segments with more than two members where no member could be identified as routing for the others, so no link was drawn.
Links produced from a connected host route — the point-to-point links that share no subnet.
Addresses sharing network bits but disagreeing on prefix length.
Nodes whose observation hit a per-node cap, so what is recorded for them is incomplete.
CDP rows that matched no monitored node, by the same two rules as the LLDP ones.
LLDP rows that matched no monitored node: by management address, or — for a row with none — by a MAC chassis id a Meraki organization lists for exactly one node.
Routing adjacencies whose peer address matched no monitored node.
Example
{ "edges": [ { "a": { "kind": "node" }, "b": { "kind": "node" }, "members": [ { "source": "manual" } ], "source": "manual", "sources": [ "manual" ] } ], "nodes": [ { "role": "edge", "role_reason": "wireless_ap", "state": "ok" } ], "stubs": [ { "kind": "node" } ]}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 the view permission
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 folder with that id that the caller can see
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" }}Skeleton mode has no inventory to build the map from
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" }}