---
title: Unified MDM API — Truto Unified API
slug: mdm
canonical: "https://truto.one/unified-apis/mdm/"
---

# Mobile Device Management Unified API

Integrate Mobile Device Management data across 3 providers with one API. 4 normalized resources, real-time pass-through, fully customizable.

**Base URL:** `https://api.truto.one/unified/mdm`  
**Resources:** 4  
**Integrations:** 3

## Resources

### Apps

Core resource which represents a software application installed on a managed device. Installed software is typically mapped to installed applications, installed programs, packages, or inventory items depending on the underlying product. (19 fields)

- `id` (string) — The unique identifier for the installed software record
- `source_id` (string) — The identifier of the installed software record in the underlying product
- `name` (string) — The name of the software/application
- `version` (string) — The installed version of the software/application
- `publisher` (string) — The publisher or vendor of the software/application
- `app_id` (string) — A platform-specific application identifier. Examples: bundle identifier (macOS/iOS), package name (Android/Linux), product code or app ID (Windows), depending on the underlying product.
- `app_id_type` (string) — The type of application identifier provided in app_id
- `platform` (string) — The platform family of the discovered/installed application
- `install_state` (string) — The installation state of the software on the device, when available from the underlying product
- `is_managed` (boolean) — Whether the software is managed/deployed by the MDM/RMM product (as opposed to discovered/unmanaged), when available
- `is_system_app` (boolean) — Whether the software is a system/built-in application, when available
- `installed_at` (string) — The date and time the software was installed, when available
- `last_seen_at` (string) — The date and time the software was last observed on the device, when available
- `install_path` (string) — The install path of the software, when available
- `size_bytes` (integer) — The installed size of the software in bytes, when available
- `device` (object) — The device this software record is associated with
- `tags` (array) — Tags/labels associated with the installed software record
- `created_at` (string) — The date and time the installed software record was created
- `updated_at` (string) — The date and time the installed software record was last updated

### Devices

Core resource which represents a managed device in an MDM or RMM system. Devices are typically mapped to endpoints, nodes, or assets depending on the underlying product. (54 fields)

- `id` (string) — The unique identifier for the device
- `name` (string) — The display name of the device
- `hostname` (string) — The host/system name of the device
- `dns_name` (string) — The DNS name of the device
- `netbios_name` (string) — The NetBIOS name of the device (Windows)
- `type` (string) — The type/category of the device
- `is_corporate_owned` (boolean) — Whether the device is corporate-owned (as opposed to personally-owned/BYOD)
- `platform` (string) — The platform family of the device
- `model` (string) — The hardware model of the device
- `manufacturer` (string) — The hardware manufacturer of the device
- `serial_number` (string) — The serial number of the device
- `asset_tag` (string) — The asset tag / inventory tag of the device
- `os_name` (string) — The operating system name
- `os_version` (string) — The operating system version
- `os_build` (string) — The operating system build identifier
- `os_version_extra` (string) — Additional operating system version information
- `disk_encryption` (boolean) — Whether the disk encryption is enabled on the device
- `firewall_enabled` (boolean) — Whether the host firewall is enabled on the device
- `mdm_enabled` (boolean) — Whether MDM management is enabled on the device
- `agent_installed` (boolean) — Whether a management agent is installed
- `agent_version` (string) — The management agent version
- `enrollment_status` (string) — Enrollment state of the device in the provider
- `approval_status` (string) — Approval state if the provider requires approval
- `is_offline` (boolean) — Whether the device is currently offline
- `first_enrolled_at` (string) — The date and time the device was first enrolled
- `last_enrolled_at` (string) — The date and time the device was most recently enrolled
- `last_scan_at` (string) — The date and time the device was last scanned for vulnerabilities or security posture signals, when supported by the underlying product
- `last_activity_at` (string) — The date and time of the last recorded activity for the device
- `organization` (object) — The organization/account the device belongs to
- `owner` (object) — The assigned owner of the device
- `policy` (object) — The applied policy / blueprint
- `edr_installed` (boolean) — Whether an endpoint detection and response (EDR) agent is installed or detected on the device
- `edr_status` (string) — The health/status of the EDR agent on the device, when available from the underlying product
- `critical_vuln_count` (integer) — The number of critical severity vulnerabilities detected on the device
- `high_vuln_count` (integer) — The number of high severity vulnerabilities detected on the device
- `patch_status` (string) — The patch compliance status of the device, based on signals available in the underlying product
- `maintenance_status` (string) — The maintenance status
- `maintenance_start_at` (string) — The date and time maintenance starts
- `maintenance_end_at` (string) — The date and time maintenance ends
- `maintenance_reason` (string) — The maintenance reason message
- `warranty_start_at` (string) — The date and time warranty starts
- `warranty_end_at` (string) — The date and time warranty ends
- `warranty_fulfillment_at` (string) — The manufacturer fulfillment date
- `backup_last_success_at` (string) — The date and time the last backup succeeded
- `backup_last_failure_at` (string) — The date and time the last backup failed
- `backup_total_bytes` (number) — Total backup usage in bytes
- `public_ip` (string) — The public IP address of the device
- `ip_addresses` (array) — The private IP addresses of the device
- `mac_addresses` (array) — The MAC addresses of the device
- `tags` (array) — The device's tags
- `notes` (array) — Notes attached to the device
- `custom_fields` (object) — Provider or customer specific fields mapped into a flexible key-value object
- `created_at` (string) — The date and time the device record was created
- `updated_at` (string) — The date and time the device record was last updated

### Organizations

Organization represents the company or the entity using the MDM or RMM system. An Organization can have one or more Users, Devices and Apps enrolled. (4 fields)

- `id` (string) — The ID of the organization
- `name` (string) — The name of the organization
- `created_at` (string) — The date and time the organization was created
- `updated_at` (string) — The date and time the organization was last updated

### Users

Users represent the people using the underlying MDM or RMM system. They are usually called employees, contractors, admins, etc. (10 fields)

- `id` (string) — The user's unique identifier
- `name` (string) — The user's name
- `first_name` (string) — The user's first name
- `last_name` (string) — The user's last name
- `emails` (array) — The emails of the user
- `organization` (object) — The organization/account the device belongs to
- `is_active` (boolean) — Whether the user is active or not
- `avatar` (string) — The URL of the user's avatar
- `created_at` (string) — The date and time the user was created
- `updated_at` (string) — The date and time the user was last updated

## Supported integrations

- [Jamf](https://truto.one/integrations/detail/jamf/)
- [Kandji](https://truto.one/integrations/detail/kandji/)
- [Ninjaone](https://truto.one/integrations/detail/ninjaone/)

## Related reading

- [Catching Shadow IT: How GRC Platforms Use Accounting APIs for Real-Time VRM](https://truto.one/blog/catching-shadow-it-how-grc-platforms-use-accounting-apis-for-real-time-vrm/) — Learn how GRC platforms use Unified Accounting APIs to detect shadow IT in real-time by analyzing expenses, bypassing the limitations of IdP and MDM logs.
- [Connect Kandji to AI Agents: Automate MDM Workflows & Audits](https://truto.one/blog/connect-kandji-to-ai-agents-automate-mdm-workflows-audits/) — Learn how to connect Kandji to AI agents using Truto's /tools endpoint and LangChain—without hand-coding pagination schemas for every endpoint.
- [Connect Kandji to ChatGPT: Automate Device Audits](https://truto.one/blog/connect-kandji-to-chatgpt-automate-device-audits/) — Learn how to connect Kandji to ChatGPT using a managed MCP server. A step-by-step technical guide to automating MDM device audits, app compliance, and security logs.
- [Launching the Unified MDM API: Integrate Iru, NinjaOne, and More](https://truto.one/blog/launching-the-unified-mdm-api-integrate-iru-ninjaone-and-more/) — Stop wrestling with fragmented MDM APIs. Truto's Unified MDM API normalizes devices, users, and apps across Iru (Kandji), NinjaOne, Intune, and more.
- [Connect Kandji to Claude: Automate MDM Workflows](https://truto.one/blog/connect-kandji-to-claude-automate-mdm-workflows/) — Learn how to connect Kandji to Claude using a managed MCP server. Automate device audits, query fleet telemetry, and execute MDM workflows without writing code.
