List Device Apps
Use this Node.js SDK operation to list applications installed on a device visible to the authenticated client.
The Device Apps operation is currently available in the Node.js SDK only. The Java SDK does not yet expose a corresponding method or model.
SDK Method
Java | Node.js | Returns |
|---|---|---|
Not available | await client.devices().apps(serial, request?) | PageDto<DeviceApp> |
The SDK calls GET /management/api/v1/public/devices/{serial}/apps. serial is required and URL-encoded by the SDK. The request has no body, and authentication is handled by the SDK client.
Request Fields
The optional ListDeviceAppsRequest controls pagination, sorting and filtering.
Builder method | Type | Default | Description |
|---|---|---|---|
.page(value) | integer | 0 | Zero-based page index |
.size(value) | integer | 20 | Maximum applications requested |
.sortBy(value) | string | ID | Server-side sort field |
.direction(value) | SortDirection | DESC | ASC or DESC |
.filters(rules) | DeviceAppFilterRequest[] | Empty | Replaces the complete filter list |
.addFilter(key, value, operation) | filter components | None | Appends one filter; examples use .filters(...) |
Available Filters
Constant | Expected value | Recommended operation | Purpose |
|---|---|---|---|
DeviceAppFilter.BUNDLE_IDENTIFIER | Bundle identifier string, for example com.example.testapp | EQUAL | Match an installed application by bundle identifier |
DeviceAppFilter.IS_DEFAULT | Boolean true or false | EQUAL | Match default/system or non-default applications |
DeviceAppFilter.FILE_KEY | Device Park application file-key string | EQUAL | Match an installed application associated with a stored file key |
Filter keys are wire-level constants. Use IS_DEFAULT, not isDefault, as the filter key. Boolean values are supplied as booleans; the SDK serializes them as true or false query values.
List Without Filters
The request argument may be omitted to use the SDK defaults:
import { Credentials, DeviceParkApiClient } from "@device-park/public-sdk";
const client = DeviceParkApiClient.builder()
.url("https://devicepark.testinium.io")
.credentials(Credentials.fromEnvironment())
.build();
const apps = await client.devices().apps("00008140-000C58300CBB801C");
for (const app of apps.data) {
console.log(app.bundleIdentifier, app.isDefault);
}The resulting query includes the default pagination and sorting values:
sorting.page=0
sorting.size=20
sorting.sortBy=ID
sorting.direction=DESCFilter Default Applications
import {
DeviceAppFilter,
type DeviceAppFilterRequest,
ListDeviceAppsRequestBuilder,
SearchOperation
} from "@device-park/public-sdk";
const filterRequest: DeviceAppFilterRequest = {
key: DeviceAppFilter.IS_DEFAULT,
value: true,
operation: SearchOperation.EQUAL
};
const request = new ListDeviceAppsRequestBuilder()
.filters([filterRequest])
.page(0)
.size(20)
.build();
const defaultApps = await client.devices().apps(
"00008140-000C58300CBB801C",
request
);The SDK maps the filter to indexed query parameters:
filters[0].key=IS_DEFAULT
filters[0].value=true
filters[0].operation=EQUAL
sorting.page=0
sorting.size=20Use the same request shape for the other filters:
const bundleFilter: DeviceAppFilterRequest = {
key: DeviceAppFilter.BUNDLE_IDENTIFIER,
value: "com.example.testapp",
operation: SearchOperation.EQUAL
};
const apps = await client.devices().apps(
"00008140-000C58300CBB801C",
new ListDeviceAppsRequestBuilder().filters([bundleFilter]).build()
);Response Model
PageDto<DeviceApp> contains one page of installed application records.
Field | Type | Nullable | Meaning |
|---|---|---|---|
id | number | Yes | Device application record identifier |
bundleIdentifier | string | Yes | Platform application identifier |
installedAt | date-time string | Yes | Installation timestamp returned by Device Park |
updatedAt | date-time string | Yes | Last update timestamp returned by Device Park |
isDefault | boolean | Yes | Whether Device Park marks the application as a default/system application |
{
"size": 20,
"page": 0,
"totalPages": 1,
"totalElements": 2,
"data": [
{
"id": 101,
"bundleIdentifier": "com.apple.mobilesafari",
"installedAt": "2026-08-01T10:15:30",
"updatedAt": "2026-08-01T10:15:30",
"isDefault": true
},
{
"id": 102,
"bundleIdentifier": "com.example.testapp",
"installedAt": "2026-08-10T14:22:11",
"updatedAt": "2026-08-12T09:01:44",
"isDefault": false
}
]
}isDefault describes the application, not device availability. A non-default application can be removed by allocation cleanup depending on the selected removeApps option.
Errors
- An empty serial is rejected by the Node.js SDK before an HTTP request is sent.
- Device Park returns 404 when the device is not assigned to the authenticated client. The SDK surfaces that response as DeviceParkHttpError with status 404.
- An empty data array is a successful response indicating that no installed application matched the filters.