Skip to content

An organization's devices as the last successful sync recorded them — monitored or not — with each one's state. Served from PostgreSQL: it never calls the Dashboard API.

GET
/api/v1/meraki/orgs/{id}/devices
curl --request GET \
--url https://example.com/api/v1/meraki/orgs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/devices \
--header 'Authorization: Bearer <token>'
id
required
string format: uuid

Organization row id

The organization’s devices; empty until its first sync

Media typeapplication/json
Array<object>

One device of an organization, as the last successful sync recorded it.

object
filing
One of:
null
first_seen_at
required
string format: date-time
folder_id

The folder the device is filed in, when it is a node — or the folder an import would file it in, when filing.reason is matched. null for a node at the top of the tree, and for a device an import would put under the organization’s own folder, in one named after its network (that folder is created by the import that first needs it).

string | null format: uuid
ha_role
One of:
null
lan_ip

The device’s LAN address, when a usable one is known: the lanIp Meraki reports. An MX (appliance) reports none, so its address is one of its own VLAN IPs — never its WAN address. An IP another network of the organization also uses is skipped; of the rest, the lowest-numbered VLAN inside a folder’s IP range, else the lowest-numbered — and when every IP is shared, the lowest-numbered of them all. null for an MX until its network’s VLANs have been read (such an MX is not imported automatically until then), and for good for an MX whose network has no LAN side at all.

string | null
missing_since

When a complete listing first failed to contain the device; null while Meraki lists it.

string | null format: date-time
model
string | null
name
required
string
network_id
required
string
network_monitored
required

Whether the device’s network is one this organization watches.

boolean
network_name

The network’s name; null for a network the sync has not recorded.

string | null
node_id

The node this device is monitored as; null unless state is monitored or missing.

string | null format: uuid
product_type
required
string
serial
required
string
state
required

What a device’s row is shown as: read from the facts the inventory keeps about it (ADR-164 decision 3), never stored. Serialized as the snake_case token.

string
Allowed values: monitored new never_online deleted missing
Example
[
{
"filing": {
"reason": "matched"
},
"ha_role": "primary",
"state": "monitored"
}
]

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 View, or the account is restricted to folders (scope_unsupported)

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

No such organization

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

Inventory storage is unavailable (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"
}
}