# Datto RMM Device API Documentation ## Overview This document describes the JSON payload structure returned when requesting an individual device from the Datto RMM API v2. ## API Endpoint ``` GET https://concord-api.centrastage.net/api/v2/devices/{deviceId} ``` ## Authentication The API uses OAuth2 authentication with Bearer tokens. See the main Datto RMM client implementation for authentication details. ## Response Structure The API returns a JSON object with an `item` property containing the device data. ### Root Response Object | Field | Type | Required | Description | |-------|------|----------|-------------| | `item` | object | Yes | The device object | ### Device Object (`item`) | Field | Type | Required | Description | |-------|------|----------|-------------| | `id` | number | Yes | Unique numeric identifier for the device | | `uid` | string | Yes | Unique string identifier for the device | | `siteId` | number | Yes | Numeric identifier of the site this device belongs to | | `siteUid` | string | Yes | String identifier of the site this device belongs to | | `siteName` | string | Yes | Name of the site this device belongs to | | `deviceType` | object | Yes | Device type classification (see below) | | `hostname` | string | Yes | Device hostname | | `description` | string | Yes | Device description | | `intIpAddress` | string | Yes | Internal IP address | | `extIpAddress` | string | Yes | External IP address | | `macAddresses` | string[] | No | List of MAC addresses associated with the device | | `domain` | string | Yes | Domain the device belongs to | | `manufacturer` | string | No | Device manufacturer (e.g., 'Dell', 'HP', 'Lenovo') | | `model` | string | No | Device model | | `serialNumber` | string | No | Device serial number | | `lastSeen` | number | Yes | Timestamp in milliseconds when device was last seen | | `lastLoggedInUser` | string | No | Username of the last logged in user | | `lastReboot` | number | No | Timestamp in milliseconds of last reboot | | `lastAuditDate` | number | No | Timestamp in milliseconds of last audit | | `creationDate` | number | No | Timestamp in milliseconds when device was created in RMM | | `online` | boolean | Yes | Whether the device is currently online | | `suspended` | boolean | Yes | Whether the device is suspended | | `deleted` | boolean | Yes | Whether the device is marked as deleted | | `rebootRequired` | boolean | No | Whether a reboot is required | | `a64Bit` | boolean | No | Whether the device is 64-bit architecture | | `operatingSystem` | string | Yes | Operating system name and version | | `cagVersion` | string | No | Version of the Datto RMM agent (CAG) | | `displayVersion` | string | No | Display version of the operating system | | `memory` | number | No | Total memory in MB | | `cpuCores` | number | No | Number of CPU cores | | `cpuName` | string | No | CPU model name | | `diskSize` | number | No | Total disk size in GB | | `antivirus` | object | No | Antivirus information (see below) | | `patchManagement` | object | No | Patch management information (see below) | | `softwareStatus` | string | No | Software status | | `portalUrl` | string | No | URL to the device in the Datto RMM portal | | `webRemoteUrl` | string | No | URL for web-based remote access | | `warrantyDate` | string\|null | No | Warranty expiration date | | `snmpEnabled` | boolean | No | Whether SNMP is enabled on the device | | `deviceClass` | string | No | Device class classification | | `udf` | object | No | User-defined fields (custom fields) | ### Device Type Object | Field | Type | Required | Description | |-------|------|----------|-------------| | `category` | string | Yes | Device category (e.g., 'Server', 'Workstation', 'Laptop') | | `type` | string | Yes | Specific device type | ### Antivirus Object | Field | Type | Required | Description | |-------|------|----------|-------------| | `antivirusProduct` | string | Yes | Name of the antivirus product | | `antivirusStatus` | string | Yes | Status of the antivirus (e.g., 'Up to date', 'Out of date') | ### Patch Management Object | Field | Type | Required | Description | |-------|------|----------|-------------| | `patchStatus` | string | Yes | Overall patch status | | `patchesApprovedPending` | number | Yes | Number of approved patches pending installation | | `patchesNotApproved` | number | Yes | Number of patches not yet approved | | `patchesInstalled` | number | Yes | Number of patches installed | ## Example Response See `datto-rmm-device-example.json` for a complete example response. ## TypeScript Type Definition The TypeScript interface is defined in `/lib/types/datto-rmm.ts`: ```typescript export interface DattoRMMDevice { id: number; uid: string; siteId: number; siteUid: string; siteName: string; deviceType: { category: string; type: string; }; hostname: string; description: string; intIpAddress: string; extIpAddress: string; macAddresses?: string[]; domain: string; manufacturer?: string; model?: string; serialNumber?: string; lastSeen: number; lastLoggedInUser?: string; lastReboot?: number; lastAuditDate?: number; creationDate?: number; online: boolean; suspended: boolean; deleted: boolean; rebootRequired?: boolean; a64Bit?: boolean; operatingSystem: string; cagVersion?: string; displayVersion?: string; memory?: number; cpuCores?: number; cpuName?: string; diskSize?: number; antivirus?: { antivirusProduct: string; antivirusStatus: string; }; patchManagement?: { patchStatus: string; patchesApprovedPending: number; patchesNotApproved: number; patchesInstalled: number; }; softwareStatus?: string; portalUrl?: string; webRemoteUrl?: string; warrantyDate?: string | null; snmpEnabled?: boolean; deviceClass?: string; udf?: Record; } ``` ## Usage in Code ```typescript import { DattoRMMClient } from '@/lib/services/datto-rmm-client'; const client = new DattoRMMClient({ apiUrl: 'https://concord-api.centrastage.net/api/v2', apiKey: 'your-api-key', apiSecret: 'your-api-secret' }); // Get a single device by ID const device = await client.getDeviceById('12345678'); if (device) { console.log(`Device: ${device.hostname}`); console.log(`Online: ${device.online}`); console.log(`OS: ${device.operatingSystem}`); console.log(`Memory: ${device.memory} MB`); } ``` ## Notes - All timestamp fields are in milliseconds (Unix epoch time) - Optional fields may not be present in the response depending on the device type and available data - The `udf` (user-defined fields) object can contain any custom fields configured in your Datto RMM instance - Hardware details like `manufacturer`, `model`, and `serialNumber` may require audit data to be populated - Use the `getDeviceWithAudit()` method to fetch a device with enhanced hardware information from audit data ## Related Files - **Type Definition**: `/lib/types/datto-rmm.ts` - **Client Implementation**: `/lib/services/datto-rmm-client.ts` - **JSON Schema**: `/docs/datto-rmm-device-schema.json` - **Example Response**: `/docs/datto-rmm-device-example.json` ## API Reference For complete Datto RMM API documentation, visit: https://help.aem.autotask.net/en/Content/APIs/API-Home.htm