> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://mediakind.ferndocs.com/beam/api/fleets/devices/list-devices-get/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://mediakind.ferndocs.com/_mcp/server. # List Devices GET https://app.mk.io/api/v1/projects/{project_name}/fleet/devices/{name}/software List software available to preload on the specified device. RBAC Capability Required: `fleet.devicesoftware.get` Reference: https://mediakind.ferndocs.com/beam/api/fleets/devices/list-devices ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Path parameters - `project_name` (string, required) - `name` (string, required) ### Query parameters - `$orderby` (string, optional) — Specifies the key by which the result collection should be ordered. - `$filter` (string, optional) — Restricts the set of items returned. - `$top` (string, optional) — 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, optional) — 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, optional) — Filters the set to the specified label key. If multiple $label_keys are specified, matching items must have all labels. - `$label` (string, optional) — 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. ## Response ### 200 A list of software - `supplemental` (ListResponseSupplementalSchema, required) — Supplemental info - `value` (list of DeviceSoftwareGetBody, required) — A list of software versions available for this device. - `@odata.nextLink` (string, optional) — @odata.nextLink URL if the page length and number of items match. ## Errors ### 400 Bad Request Error Bad Request - `error` (ErrorDetail, required) — Pertinent information about the error - `ref` (string, required) — A reference to the request that caused the error. - `status` (integer, required) — The HTTP status code ### 401 Unauthorized Error Unauthorized - `error` (ErrorDetail, required) — Pertinent information about the error - `ref` (string, required) — A reference to the request that caused the error. - `status` (integer, required) — The HTTP status code ### 403 Forbidden Error Forbidden - `error` (ErrorDetail, required) — Pertinent information about the error - `ref` (string, required) — A reference to the request that caused the error. - `status` (integer, required) — The HTTP status code ### 404 Not Found Error Not Found - `error` (ErrorDetail, required) — Pertinent information about the error - `ref` (string, required) — A reference to the request that caused the error. - `status` (integer, required) — The HTTP status code ### 429 Too Many Requests Error Too Many Requests - `error` (ErrorDetail, required) — Pertinent information about the error - `ref` (string, required) — A reference to the request that caused the error. - `status` (integer, required) — The HTTP status code ### 500 Internal Server Error Internal Server Error - `error` (ErrorDetail, required) — Pertinent information about the error - `ref` (string, required) — A reference to the request that caused the error. - `status` (integer, required) — The HTTP status code ## Types ### ListResponseSupplementalSchema - `count` (integer, required) — Number of items returned - `kind` (string, required) — Type of items in the list - `operation` (string, required) — Operation type. Should always say 'list' - `pagination` (PaginationInfoSchema, required) — Pagination info - `subscription` (ProjectInfoSchema, optional) — Project info ### DeviceSoftwareGetBody - `metadata` (DefaultMetadata, required) — Software metadata. - `spec` (SoftwareGetSpec, required) — Software specification. - `status` (DeviceSoftwareStatusSpec, required) — Device-context status for this software release. - `kind` (string, optional) — Software ### ErrorDetail - `code` (string, required) — The error code. - `detail` (string, required) — The error message. - `extraDetail` (map from string to any, optional) — Extra information regarding this error. ### PaginationInfoSchema - `end` (integer, required) — Position of the last item in the list - `records` (integer, required) — Total number of items returned in the list - `start` (integer, required) — Position of the first item in the list - `total` (integer, required) — Total number of items in the project ### ProjectInfoSchema - `id` (string, required) — Project ID - `name` (string, required) — Project name ### DefaultMetadata - `displayName` (string, required) — A human-readable name for the resource. - `labels` (map from string to string, optional) — A dictionary of labels associated with the resource. Maximum number of labels: 32. Maximum length of a label or value: 256 characters. Label: alphanumeric, hyphens and underscores. Value: alphanumeric, hyphens, underscores and spaces. ### SoftwareGetSpec - `released` (string, required) — The date the software was released. - `deprecatedOn` (string, optional, default: ) — The date the software was deprecated. - `displayName` (string, optional, default: ) — An optional display name of the software. - `minimumVersion` (string, optional, default: ) — Minimum software version required on a standalone device before upgrading to this release. - `minimumVersionHA` (string, optional, default: ) — Minimum software version required on an HA node before upgrading to this release. - `version` (string, optional) — A version string. ### DeviceSoftwareStatusSpec - `downgradeCompatible` (boolean, required) — Whether switching to this release is safe from an underlying component perspective. False if this release has a lower minimum version requirement than the currently installed release (or nearest known release for dev builds). True when no suitable reference release can be found (fail open). - `upgradeCompatible` (boolean, required) — Whether the device's current software version meets the applicable minimum version requirement for upgrading to this release. Uses the HA minimum for HA nodes and the standalone minimum for standalone devices. ## Examples **Response** ```json { "supplemental": { "count": 1, "kind": "string", "operation": "string", "pagination": { "end": 1, "records": 1, "start": 1, "total": 1 }, "subscription": { "id": "string", "name": "string" } }, "value": [ { "metadata": { "displayName": "string", "labels": {} }, "spec": { "released": "2025-03-24", "deprecatedOn": "2025-03-25", "displayName": "beam", "minimumVersion": "1.5", "minimumVersionHA": "1.7", "version": "1.0.0.0" }, "status": { "downgradeCompatible": true, "upgradeCompatible": true }, "kind": "string" } ], "@odata.nextLink": "string" } ``` **SDK Code** ```python import requests url = "https://app.mk.io/api/v1/projects/project_name/fleet/devices/name/software" headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://app.mk.io/api/v1/projects/project_name/fleet/devices/name/software'; const options = {method: 'GET', headers: {Authorization: 'Bearer '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://app.mk.io/api/v1/projects/project_name/fleet/devices/name/software" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://app.mk.io/api/v1/projects/project_name/fleet/devices/name/software") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://app.mk.io/api/v1/projects/project_name/fleet/devices/name/software") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://app.mk.io/api/v1/projects/project_name/fleet/devices/name/software', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.mk.io/api/v1/projects/project_name/fleet/devices/name/software"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://app.mk.io/api/v1/projects/project_name/fleet/devices/name/software")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```