# Retrieve a list of managed devices gets list of devices and its details ## Endpoints **GET** `/api/v1/mdm/devices` ## Request URL `https://{serverurl}/api/v1/mdm/devices` ## Scope `MDMOnDemand.MDMInventory.READ` ## Header ``` Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52 ``` ## Request Parameters ### Query Parameters - **limit** *(integer, Optional)* Maximum number of records to return in a single response. Used together with offset for pagination - **skip-token** *(string, Optional)* Pagination continuation token returned by a previous response. Pass it to fetch the next page of results - **offset** *(integer, Optional)* Zero-based index of the first record to return. Used together with limit for pagination - **delta-token** *(string, Optional)* Token used for delta/incremental fetches. Pass the token returned from a previous response to retrieve only items modified since that point - **searchkey** *(string, Optional)* Value to search for. Must be used in combination with searchfield to specify which field is searched - **searchfield** *(string, Optional)* Name of the field to search against. Used together with searchkey (e.g., name, email, udid) - **is_allowed_apps** *(boolean, Optional)* Set to true to return apps from the allow list, false to return apps from the block list - **is_app_purchased_from_portal** *(boolean, Optional)* Set to true to restrict results to apps purchased through the enterprise app portal (VPP/managed Google Play). Default: false - **search** *(string, Optional)* Free-text search string applied to the default searchable fields of the resource - **app_scope** *(string, Optional)* Filter applications by their assignment scope. Allowed values: 1=All, 2=Assigned to groups, 3=Assigned to devices - **platform** *(string, Optional)* Filter results by device platform. Allowed values: 1=iOS, 2=Android, 3=Windows, 4=macOS, 6=tvOS - **email** *(string, Optional)* - **group_id** *(long, Optional)* - **exclude_removed** *(boolean, Optional)* - **owned_by** *(integer, Optional)* - **device_type** *(string, Optional)* Filter results by device type. Allowed values: 1=Mobile, 2=Tablet, 3=Laptop, 4=Desktop, 5=TV - **select_all** *(boolean, Optional)* When true, applies the operation to every record matching the current filter rather than to specific IDs. Default: false - **device_group_unassigned** *(boolean, Optional)* When true, returns only devices that are not assigned to any device group. Default: false - **summary** *(boolean, Optional)* When true, returns only a lightweight summary projection of the resource instead of full details. Default: false - **imei** *(string, Optional)* - **include_all** *(boolean, Optional)* - **serial_number** *(string, Optional)* - **customer_ids** *(string, Optional)* - **is_tree_source** *(boolean, Optional)* - **exclude_agent** *(string, Optional)* - **is_supervised** *(boolean, Optional)* - **start_date** *(string, Optional)* - **end_date** *(string, Optional)* ## Sample Request ### Curl ```bash curl --request GET \ --url https://appdomain/api/v1/mdm/devices \ --header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' ``` ### Java ```java import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.io.IOException; import java.net.http.HttpTimeoutException; public class Main { public static void main(String[] args) { HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://appdomain/api/v1/mdm/devices")) .header("Authorization", "Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52") .method("GET", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } } ``` ### Python ```python import http.client conn = http.client.HTTPSConnection("appdomain") headers = { 'Authorization': "Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52" } conn.request("GET", "/api/v1/mdm/devices", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ### Deluge ```javascript headersMap = Map(); headersMap.put("Accept", "application/json"); response = invokeUrl [ url: "https://appDomain/api/v1/mdm/devices" type: GET headers: headersMap connection: connection_name ] info response; ``` ### PowerShell ```powershell $headers=@{} $headers.Add("Authorization", "Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52") $response = Invoke-WebRequest -Uri 'https://appdomain/api/v1/mdm/devices' -Method GET -Headers $headers ``` ## Response Parameters ### HTTP 200 **Response Body:** `application/json` - **devices** *(JSON array)* Array of managed device objects - **device_id** *(string)* Unique identifier of the managed device - **os_version** *(string)* Operating system version installed on the device - **is_lost_mode_enabled** *(boolean)* Whether Lost Mode is currently enabled on the device - **owned_by** *(string)* Device ownership type: 1 - Corporate, 2 - Personal - **is_removed** *(string)* (Deprecated) Whether the device is removed from management - **product_name** *(string)* Manufacturer or product name of the device - **device_name** *(string)* Assigned name of the device - **platform_type** *(string)* Platform type of the device (e.g., android, ios, windows) - **platform_type_id** *(string)* Platform type ID: 1 - iOS, 2 - Android, 3 - Windows - **udid** *(string)* Unique Device Identifier - **serial_number** *(string)* Hardware serial number of the device - **model** *(string)* Device model identifier - **imei** *(long)* International Mobile Equipment Identity number - **user** *(JSON object)* User details assigned to the device - **user_name** *(string)* Name of the user assigned to the device - **user_id** *(string)* Unique identifier of the assigned user - **user_email** *(string)* Email address of the assigned user - **summary** *(JSON object)* Summary counts of profiles, apps, documents, and groups - **profile_count** *(string)* Number of profiles installed on the device - **app_count** *(string)* Number of apps on the device - **doc_count** *(string)* Number of documents on the device - **group_count** *(string)* Number of groups the device belongs to ## Sample Response: HTTP 200 ```json { "devices": [ { "summary": { "doc_count": "1", "group_count": "2", "profile_count": "5", "app_count": "10" }, "device_id": "9007199254741001", "os_version": "8.0.0", "is_lost_mode_enabled": false, "owned_by": "2", "is_removed": "false", "serial_number": "2321bkbkqgidga1", "product_name": "samsung", "device_name": "admin_SM-G935F", "platform_type": "android", "imei": 357327071694307, "model": "SM-G935F", "udid": "f8c4071d394ef48e", "platform_type_id": "2", "user": { "user_email": "admin@zylker.com", "user_id": "9007199254740999", "user_name": "admin" } } ] } ``` ## Possible HTTP Status Codes - **200** HTTP code ## Rate Limiting **Duration:** 1 minute **Threshold:** 250 **Lock period:** 5 minutes - **Duration** - Time window for the threshold. - **Threshold** - Number of API calls allowed within the specified duration. - **Lock Period** - Wait time before consecutive API requests.