Skip to main content
PATCH
Update a device
Key: Write Scope: Company

Authorizations

Authorization
string
header
required

Use your Primo API key in the Authorization header as Bearer <API_KEY>.

Path Parameters

deviceId
string
required

Body

application/json
purchaseDate

Date the device was purchased, as an ISO 8601 date (YYYY-MM-DD) or datetime

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
decommissioningDate

Date the device was decommissioned, as an ISO 8601 date (YYYY-MM-DD) or datetime

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
purchasePriceNoVAT
integer | null

Purchase price excluding VAT, in cents

Required range: -9007199254740991 <= x <= 9007199254740991
ownerId
string | null

ID of the employee this device is assigned to. Null unassigns it. Must be an employee of your company.

Pattern: ^[a-f\d]{24}$
name
string

Display name of the device. Cannot be emptied. Rejected when a device naming MDM control drives the name. On Windows and Linux, letters, digits and hyphens only, starting and ending with a letter or a digit.

Minimum string length: 1
assetId
string | null

Asset tag recorded by the company. Free text, null clears it.

condition
enum<string> | null

Physical condition of the device. One of BROKEN, FAIR, GOOD, EXCELLENT.

Available options:
BROKEN,
FAIR,
GOOD,
EXCELLENT
keyboardLayout
enum<string> | null

Keyboard layout of the device, e.g. FRENCH, US_ENGLISH — see the enum for the full list.

Available options:
FRENCH,
US_ENGLISH,
ARABIC,
CHINESE_PINYIN,
CHINESE_ZHUYIN,
DANISH,
DUTCH,
GERMAN,
INTERNATIONAL_ENGLISH,
ITALIAN,
NORWEGIAN,
PORTUGUESE,
RUSSIAN,
SPANISH,
SPANISH_LATIN_AMERICA,
SWEDISH,
SWISS,
TURKISH,
UK_ENGLISH,
UKRAINIAN,
HEBREW,
MACEDONIAN,
JAPANESE_JIS
inchScreenSize
number | null

Screen size in inches, e.g. 14 or 13.6.

brand
string | null

Brand or manufacturer name, e.g. "APPLE", "LENOVO".

modelName
string | null

Commercial model name, e.g. "MacBook Pro 14"".

year
integer | null

Year the device was manufactured, e.g. 2024.

Required range: -9007199254740991 <= x <= 9007199254740991
serialNumber
string | null

Serial number of the device. Must be unique in your company. Only editable while the device is not enrolled in MDM — MDM owns this value on an enrolled device.

modelIdentifier
string | null

Model identifier reported by the device, e.g. "MacBookPro18,3". Only editable while the device is not enrolled in MDM — MDM owns this value on an enrolled device.

type
enum<string> | null

Device type: LAPTOP, TABLET, SMARTPHONE. Only editable while the device is not enrolled in MDM — MDM owns this value on an enrolled device.

Available options:
LAPTOP,
TABLET,
SMARTPHONE
processor
string | null

Processor name, e.g. "Apple M2 Pro". Only editable while the device is not enrolled in MDM — MDM owns this value on an enrolled device.

ram
integer | null

RAM in GB, e.g. 16. Only editable while the device is not enrolled in MDM — MDM owns this value on an enrolled device.

Required range: -9007199254740991 <= x <= 9007199254740991
storage
integer | null

Disk size in GB, e.g. 512. Only editable while the device is not enrolled in MDM — MDM owns this value on an enrolled device.

Required range: -9007199254740991 <= x <= 9007199254740991
batteryHealth
enum<string> | null

Battery condition: SERVICE_RECOMMENDED or NORMAL. Only editable while the device is not enrolled in MDM — MDM owns this value on an enrolled device.

Available options:
SERVICE_RECOMMENDED,
NORMAL

Response

default - application/json
id
string
required
tags
string[]
required
isEnrolled
boolean
required
createdAt
string<date-time>
required
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
updatedAt
string<date-time>
required
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
ownerId
string | null

The ID of the employee assigned to this device

name
string | null
serialNumber
string | null
computerName
string | null
deprecated

Deprecated — use name instead. This field will be removed on 2026-04-13.

type
enum<string> | null
Available options:
LAPTOP,
TABLET,
SMARTPHONE
condition
enum<string> | null

Physical condition recorded for the device

Available options:
BROKEN,
FAIR,
GOOD,
EXCELLENT
platform
enum<string> | null
Available options:
ANDROID,
IOS,
MACOS,
WINDOWS,
LINUX,
CHROME_OS,
IPADOS,
UNKNOWN
brand
string | null
manufacturer
string | null
modelName
string | null
modelIdentifier
string | null
year
number | null
osVersion
string | null
osName
string | null
buildVersion
string | null
osUpdateStatus
enum<string> | null

OS update status of the device against the company's OS update policies: UP_TO_DATE, NOT_UP_TO_DATE, or NOT_SETUP when no OS update policy targets the device. Null when unknown.

Available options:
UP_TO_DATE,
NOT_UP_TO_DATE,
NOT_SETUP
enrolledAt
string<date-time> | null
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
disenrolledAt
string<date-time> | null
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
purchaseDate
string<date-time> | null

Date the device was purchased

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
decommissioningDate
string<date-time> | null

Date the device was decommissioned

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
purchasePriceNoVAT
number · null · null

Purchase price excluding VAT, in cents

lockWipeStatus
enum<string> | null

Current lock/wipe status of the device. LOCKING/LOCKED for lock operations, UNLOCKING for unlock in progress, WIPING/WIPED for wipe operations. Null when device is in normal state.

Available options:
LOCKED,
LOCKING,
UNLOCKING,
WIPED,
WIPING
edrProvider
enum<string> | null

EDR provider protecting the device: SENTINELONE, THREATDOWN, or null when no EDR (e.g. no EDR configured, or device not yet protected).

Available options:
SENTINELONE,
THREATDOWN
connectionStatus
enum<string> | null

Device liveness: ONLINE (currently reachable), OFFLINE (not reachable but its agent is still live), INACTIVE (the agent stopped reporting — in practice no news for about a week), NOT_COMPATIBLE (iOS, iPadOS and Android have no liveness notion), or null when MDM is off for the device. INACTIVE follows from the agent being disabled, NOT from a threshold on lastSeenAt — to find devices silent for months, read lastSeenAt.

Available options:
ONLINE,
OFFLINE,
INACTIVE,
NOT_COMPATIBLE
lastSeenAt
string<date-time> | null

Last time the platform received anything from the device. The field to use for "silent for N days".

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
lastScannedAt
string<date-time> | null

Last time the device's inventory was collected. A device can be heard from without being re-scanned.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
lastRestartAt
string<date-time> | null

Last time the device rebooted

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
availableStatus
enum<string> | null

Fleet-management status of the device: IN_USE, IN_STOCK or RETIRED

Available options:
IN_USE,
IN_STOCK,
RETIRED
enrollmentType
enum<string> | null

How the device was enrolled into MDM

Available options:
MANUAL,
AUTOMATIC
assetId
string | null

Asset tag recorded by the company

privateIpAddress
string | null
publicIpAddress
string | null
ram
number | null

RAM in GB

storage
number | null

Disk size in GB

processor
string | null

Processor name, e.g. "Apple M2 Pro"

cpuType
string | null

Raw CPU type reported by the device, e.g. "arm64e" or "x86_64"

cpuArchitecture
enum<string> | null

CPU instruction-set architecture, derived from the device CPU. Use it to tell which architecture-specific software build a device can run. Null when the device has never been synced.

Available options:
ARM,
X86
inchScreenSize
number | null

Screen size in inches

keyboardLayout
enum<string> | null
Available options:
FRENCH,
US_ENGLISH,
ARABIC,
CHINESE_PINYIN,
CHINESE_ZHUYIN,
DANISH,
DUTCH,
GERMAN,
INTERNATIONAL_ENGLISH,
ITALIAN,
NORWEGIAN,
PORTUGUESE,
RUSSIAN,
SPANISH,
SPANISH_LATIN_AMERICA,
SWEDISH,
SWISS,
TURKISH,
UK_ENGLISH,
UKRAINIAN,
HEBREW,
MACEDONIAN,
JAPANESE_JIS
batteryHealth
enum<string> | null

Battery condition reported by the device: NORMAL, or SERVICE_RECOMMENDED when the battery should be serviced. Null when the device reported nothing.

Available options:
SERVICE_RECOMMENDED,
NORMAL
batteryCycleCount
number | null
diskSpaceAvailableStatus
enum<string> | null

Bucketed free-disk-space level derived from percentDiskSpaceAvailable

Available options:
LOW,
MEDIUM,
HIGH
percentDiskSpaceAvailable
number | null
bootstrapTokenEscrowed
boolean | null

Whether the macOS bootstrap token is escrowed. Null when the device reported nothing about it.

bootstrapTokenEscrowedAt
string<date-time> | null
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$