list devices.md

List Devices

Fleets API · Devices

GET https://app.mk.io/api/v1/projects/{project_name}/fleet/devices

List devices on the specified project. To learn more about devices, read Device Concept.

Listing, Sorting and Filtering Devices

This endpoint returns the list of devices in the specified project.

Sorting

The results from this endpoint can be ordered using the $orderby query parameter. Specify a list of field names, separated by commas where each one can optionally specify asc or desc.

Sorting is valid on the following fields: created, createdBy, displayName, id, labels, metadata/created, metadata/displayName, metadata/name, name, status/alarmSeverity, status/beamHA/activeControllerDeviceName, status/beamHA/roles, status/currentSoftwareVersion, status/lastContact, status/model, status/rollbackSoftwareVersion, status/serialNumber, updated, updatedBy

Filtering

There are two ways to filter the set of returned devices from this endpoint - the first is to use the $filter query parameter, the second is to use the $label_key and $label query parameters.

The $filter query parameter allows for devices to be filtered on the basis of fields in the schema using OData query syntax. See this document for more details on the syntax used.

Filters are valid on the following fields: created, createdBy, createdByEmail, createdByName, displayName, id, labels, metadata/created, metadata/displayName, metadata/name, name, spec/siteName, status/alarmSeverity, status/beamHA/activeControllerDeviceName, status/beamHA/roles, status/currentSoftwareVersion, status/lastContact, status/model, status/rollbackSoftwareVersion, status/serialNumber, updated, updatedBy, updatedByEmail, updatedByName

$label_key and $label are specific to querying devices based on their labels. Labels are a set of key-value pairs that can be used to identify devices with any arbitrary metadata you want, specifically for the purpose of retrieving relevant subsets of devices.

Examples:

?$top=10 - Returns only the first 10 devices from the list.

?$orderby=name desc - Sorts devices by name in descending order.

?$filter=name eq 'descriptive name' - Returns devices that match the provided name.

?$orderby=created desc - Sorts devices by creation date in descending order.

?$filter=created ge 2021-01-01T00:00:00Z - Returns devices created after January 1, 2021.

?$label=studio=paravalley - Returns devices with the label studio set to paravalley.

?$label=release-date~2023 - Returns devices with the label release-date set to a value that contains 2023.

?$label_key=studio&label_key=release-date - Returns devices with any value set for the studio label and the release-date label.

RBAC Capability Required: fleet.device.get

Authentication

Path parameters

Name Type Required Description
project_name string Yes

Query parameters

Name Type Required Description
$orderby string No Specifies the key by which the result collection should be ordered.
$filter string No Restricts the set of items returned.
$top string No Specifies a non-negative integer n that limits the number of items returned from a collection. The service returns the number of available items up to but not greater than the specified value n.
$skiptoken string No Specifies a start offset to support paginated results. Use @odata.nextLink in the result object to enumerate the collection - it will be present only if there's more than one page of entities.
$label_key string No Filters the set to the specified label key. If multiple $label_keys are specified, matching items must have all labels.
$label string No Filters the set to the specified label key/value pair. Supports equality, inequality, and inexact matching. If multiple values are provided for the same key, items matching either value will be returned.

Example request

curl -X GET "https://app.mk.io/api/v1/projects/{project_name}/fleet/devices" \
  -H "Authorization: Bearer <token>"

Responses

200 — A list of devices

Example

{
  "@odata.nextLink": "string",
  "supplemental": {
    "count": 0,
    "kind": "string",
    "operation": "string",
    "pagination": {
      "end": 0,
      "records": 0,
      "start": 0,
      "total": 0
    },
    "subscription": {
      "id": "string",
      "name": "string"
    }
  },
  "value": [
    {
      "kind": "string",
      "metadata": {
        "created": "2024-01-01T00:00:00Z",
        "createdBy": "00000000-0000-0000-0000-000000000000",
        "createdByEmail": "string",
        "displayName": "string",
        "id": "00000000-0000-0000-0000-000000000000",
        "labels": {
          "label1": "value1",
          "label2": "value2"
        },
        "name": "string",
        "updated": "2024-01-01T00:00:00Z",
        "updatedBy": "00000000-0000-0000-0000-000000000000",
        "updatedByEmail": "string"
      },
      "spec": {
        "autoPreloadLatestSoftware": true,
        "availableNetworks": [
          {
            "interfaceName": "eth0",
            "networkName": "internet"
          }
        ],
        "desiredSoftwareVersion": "1.0.0.0",
        "geolocation": {
          "coordinates": [
            0
          ]
        },
        "locationId": "e188ca13-604f-4940-9afb-c3cb952baf01",
        "preloadSoftwareVersion": "1.0.0.1",
        "shortCode": "XU7U23WD",
        "siteName": "world"
      },
      "status": {
        "alarmSeverity": 0,
        "assignedFlows": [
          {
            "name": "channel-1"
          }
        ],
        "beamHA": {
          "activeControllerDeviceName": "controller-01",
          "roles": [
            "Controller",
            "Worker",
            "Arbiter"
          ],
          "status": "OK",
          "unregisteredDevices": [
            "e188ca13-604f-4940-9afb-c3cb952baf01"
          ]
        },
        "capabilities": {
          "configurationBackup": true
        },
        "currentSoftwareVersion": "1.0.0.2",
        "geolocation": {
          "coordinates": [
            0
          ]
        },
        "interfaces": [
          {
            "ipAddresses": [
              "10.10.10.1"
            ],
            "name": "eth0",
            "state": "Present",
            "type": "IP"
          }
        ],
        "lastContact": "string",
        "locationId": "e188ca13-604f-4940-9afb-c3cb952baf01",
        "preloadedSoftware": [
          {
            "downgradeCompatible": true,
            "name": "beam",
            "precentProgress": 25,
            "progressDetails": "1.2GiB of 4.9GiB",
            "state": "Downloading",
            "upgradeCompatible": true,
            "version": "1.0.0.0"
          }
        ],
        "rollbackSoftwareVersion": "1.0.0.1",
        "secondsSinceLastContact": 0,
        "serialNumber": "string",
        "softwareName": "beam",
        "softwareUpgradeState": "Idle",
        "url": "string"
      }
    }
  ]
}

400 — Bad Request

Example:

{
  "error": {
    "code": "string",
    "detail": "string",
    "extraDetail": {
      "key": null
    }
  },
  "ref": "string",
  "status": 0
}

401 — Unauthorized

Example:

{
  "error": {
    "code": "string",
    "detail": "string",
    "extraDetail": {
      "key": null
    }
  },
  "ref": "string",
  "status": 0
}

403 — Forbidden

Example:

{
  "error": {
    "code": "string",
    "detail": "string",
    "extraDetail": {
      "key": null
    }
  },
  "ref": "string",
  "status": 0
}

404 — Not Found

Example:

{
  "error": {
    "code": "string",
    "detail": "string",
    "extraDetail": {
      "key": null
    }
  },
  "ref": "string",
  "status": 0
}

429 — Too Many Requests

Example:

{
  "error": {
    "code": "string",
    "detail": "string",
    "extraDetail": {
      "key": null
    }
  },
  "ref": "string",
  "status": 0
}

500 — Internal Server Error

Example:

{
  "error": {
    "code": "string",
    "detail": "string",
    "extraDetail": {
      "key": null
    }
  },
  "ref": "string",
  "status": 0
}

Source spec: fleets-api · operationId: [get]_/api/v1/projects/{project_name}/fleet/devices