List devices and inspect device state
Prerequisites
Authorization header:Command Line
1Authorization: Bearer <your_api_key>Keep API keys on your backend
API keys can access your team's public control-plane surface. Store them in your backend or other server-side tooling, not in an untrusted client.
List devices
Graphql
1query {
2 team {
3 devices(first: 10) {
4 nodes {
5 id
6 name
7 status
8 model
9 architecture
10 version
11 lastContactAt
12 }
13 pageInfo {
14 hasNextPage
15 endCursor
16 }
17 }
18 }
19}- which devices exist in the team
- whether they are currently
ONLINEorOFFLINE - which device ID to carry into the next query
- whether more pages exist
Inspect one device
Graphql
1query($deviceId: ID!) {
2 team {
3 device(deviceId: $deviceId) {
4 id
5 name
6 status
7 model
8 serialNumber
9 architecture
10 kind
11 capabilities
12 version
13 lastContactAt
14 lastStatusChangeAt
15 networkInterfaces {
16 interfaceName
17 ipv4Address
18 macAddress
19 }
20 availableUpgrade {
21 id
22 version
23 semver
24 }
25 }
26 }
27}JSON
1{
2 "deviceId": "device-id-from-list"
3}- the device identity and current connection state
- whether the target is
OAKorSELF_HOSTED - which capabilities are available for the device path
- whether network details explain the current reachability state
- whether
availableUpgradeexposes a supported update candidate
Request only the fields your workflow needs
The GraphQL selection set is flexible. Start with the fields above, then trim or expand the query based on what your device-management workflow actually uses.
Move from inspection to action
- install an app on the device or inspect installed app state
- start or stop an installed app
- trigger a supported OTA or firmware update when
availableUpgradeis present - use browser-side sessions only when the goal is remote interaction, logs, or visualization rather than a control-plane action
Verify the result
- you can call
team.devicesand receive the expected fleet slice - you can take one returned device ID and call
team.device - you can tell whether the device is online, what version it is running, and whether supported update data is present
- you know whether the next step is an app lifecycle mutation, an update flow, or an interactive session