# Retrieve location details for all managed devices gets the locations of all managed devices ## Endpoint `GET /api/mdm/devices/locations` ## Request ### Request URL `https://{server-hostname}:8383/api/mdm/devices/locations` ### Scope `MDMInventory.READ` ### Header `Authorization: d92d4xxxxxxxxxxxxx15f52` ### Request Parameters #### Request Headers | Parameter | Type | Required | Value | |---|---|---|---| | Accept | string | Mandatory | `application/json` | #### Query Parameters | Parameter | Type | Required | Description | |---|---|---|---| | 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 | | last_known | boolean | Optional | When true, returns the last-known data even when the device is offline. Default: false | | from | string | Optional | Start of the result range or time window (epoch milliseconds for time filters, zero-based index for ranges) | | to | string | Optional | | ### Sample Request ```curl curl --request GET \ --url 'https://appdomain/api/mdm/devices/locations?limit=SOME_INTEGER_VALUE&skip-token=SOME_STRING_VALUE&offset=SOME_INTEGER_VALUE&delta-token=SOME_STRING_VALUE&searchkey=SOME_STRING_VALUE&searchfield=SOME_STRING_VALUE&is_allowed_apps=SOME_BOOLEAN_VALUE&is_app_purchased_from_portal=SOME_BOOLEAN_VALUE&search=SOME_STRING_VALUE&app_scope=SOME_STRING_VALUE&platform=SOME_STRING_VALUE&last_known=SOME_BOOLEAN_VALUE&from=SOME_STRING_VALUE&to=SOME_STRING_VALUE' \ --header 'Accept: application/json' \ --header 'Authorization: d92d4xxxxxxxxxxxxx15f52' ``` ## Response ### HTTP Code 200 Response body: `application/json` | Parameter | Type | Description | |---|---|---| | Response body | JSON Object | | | deviceLocationMap | JSON Object | Map of device IDs to arrays of location objects containing latitude, longitude, added_time, and located_time | ### Possible Response Codes | Code | Type | |---|---| | 200 | HTTP code | ### Sample Response: HTTP 200 Location map for all managed devices ```json { "deviceLocationMap": { "9007199254741002": [ { "added_time": "1523370360800", "latitude": "37.7850", "located_time": "1523370128600", "longitude": "-122.4094" } ], "9007199254741001": [ { "added_time": "1523370360750", "latitude": "37.7749", "located_time": "1523370128573", "longitude": "-122.4194" } ] } } ``` ## Rate Limits ![ ](https://www.zohowebstatic.com/sites/zweb/images/people/ico-help.png) **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.