Deprecation of Classic API Computer Inventory Endpoints
Overview
This article describes the deprecation of the endpoints used to obtain macOS inventory data using the Classic API, beginning in version 11.15.0 of Jamf Pro, as well as recommendations on how to update your tools or applications to support these changes.
History
Jamf introduced the computers Classic API endpoints for obtaining macOS inventory data more than a decade ago and since that time thousands of API consumers have interacted with these endpoints. Beginning in Jamf Pro v10.39.0, Jamf introduced the computer-inventory endpoints as part of the Jamf Pro API, featuring support for sorting, filtering and pagination.
Deprecation Timeline
Beginning with Jamf Pro version 11.15.0 the computers endpoints will be moved to a deprecated state. Jamf is committed to minimizing the disruption created by this change and will provide a 1-year period of continued support for the computers endpoints used to obtain macOS inventory data from the Classic API. No additional development will take place for these endpoints and any new fields added to a computer object within Jamf Pro will require the use of the Jamf Pro API to obtain these data points.
Migration Resources
Overview
The computers endpoints in the Classic API require that API consumers iterate over every device individually. Although a similar approach could be implemented with the Return all sections of a computer endpoint in the Jamf Pro API, we recommend the use of the Return paginated Computer Inventory records endpoint, which supports pagination, filtering and sorting.
This endpoint which returns paginated results also supports the use of the section
query parameter, allowing for more granular control over which data points are returned for a device record. If no value is specified for the section
query parameter, the API will default to returning only the GENERAL
section. Review the API reference documentation to ensure that you specify the values of sections required by your application. An example curl command for providing data from all sections can be found below:
curl -X 'GET' \
'https://yourserver.jamfcloud.com/api/v1/computers-inventory?section=GENERAL§ion=DISK_ENCRYPTION§ion=PURCHASING§ion=APPLICATIONS§ion=STORAGE§ion=USER_AND_LOCATION§ion=CONFIGURATION_PROFILES§ion=PRINTERS§ion=SERVICES§ion=HARDWARE§ion=LOCAL_USER_ACCOUNTS§ion=CERTIFICATES§ion=ATTACHMENTS§ion=PLUGINS§ion=PACKAGE_RECEIPTS§ion=FONTS§ion=SECURITY§ion=OPERATING_SYSTEM§ion=LICENSED_SOFTWARE§ion=IBEACONS§ion=SOFTWARE_UPDATES§ion=EXTENSION_ATTRIBUTES§ion=CONTENT_CACHING§ion=GROUP_MEMBERSHIPS&page=0&page-size=100&sort=general.name%3Aasc' \
-H 'accept: application/json' \
-H 'Authorization: Bearer TokenValue'
Field Mapping
The field naming convention between Classic and Jamf Pro APIs poses another challenge that must be addressed when attempting to migrate between these API endpoints. To assist you in parsing the response from the Jamf Pro API and updating your applications to consume this new data model, we've provided a table which details the mapping of field names between the Classic and Jamf Pro API endpoints. See below for more details.
Classic API Field | Jamf Pro API Field | Description |
---|---|---|
general.id | id | Unique identifier for the computer |
general.name | general.name | Computer name |
general.mac_address | hardware.macAddress | Primary MAC address |
general.alt_mac_address | hardware.altMacAddress | Secondary MAC address |
general.ip_address | general.lastIpAddress | Last reported IP address |
general.serial_number | hardware.serialNumber | Hardware serial number |
general.udid | udid | Unique device identifier |
general.jamf_version | general.jamfBinaryVersion | Jamf binary version |
general.platform | general.platform | Device platform |
general.barcode_1 | general.barcode1 | Primary barcode |
general.barcode_2 | general.barcode2 | Secondary barcode |
general.asset_tag | general.assetTag | Asset tag |
general.remote_management.managed | general.remoteManagement.managed | Remote management status |
general.supervised | general.supervised | Supervision status |
general.mdm_capable | general.mdmCapable.capable | MDM capability status |
disk_encryption.enabled | diskEncryption.fileVault2Enabled | FileVault 2 status |
disk_encryption.individual_recovery_key_valid | diskEncryption.individualRecoveryKeyValidityStatus | Recovery key validity |
disk_encryption.institutional_recovery_key_present | diskEncryption.institutionalRecoveryKeyPresent | Institutional recovery key presence |
disk_encryption.disk_encryption_configuration_name | diskEncryption.diskEncryptionConfigurationName | Disk encryption configuration |
disk_encryption.file_vault2_users | diskEncryption.fileVault2EnabledUserNames | FileVault 2 enabled users |
purchasing.purchased | purchasing.purchased | Purchase status |
purchasing.leased | purchasing.leased | Lease status |
purchasing.po_number | purchasing.poNumber | Purchase order number |
purchasing.vendor | purchasing.vendor | Vendor name |
purchasing.applecare_id | purchasing.appleCareId | AppleCare ID |
purchasing.purchase_price | purchasing.purchasePrice | Purchase price |
purchasing.life_expectancy | purchasing.lifeExpectancy | Expected life in months |
purchasing.purchasing_account | purchasing.purchasingAccount | Purchasing account |
purchasing.purchasing_contact | purchasing.purchasingContact | Purchasing contact |
purchasing.po_date | purchasing.poDate | Purchase order date |
purchasing.warranty_date | purchasing.warrantyDate | Warranty expiration date |
purchasing.lease_date | purchasing.leaseDate | Lease date |
hardware.make | hardware.make | Device manufacturer |
hardware.model | hardware.model | Device model |
hardware.model_identifier | hardware.modelIdentifier | Model identifier |
hardware.os_version | operatingSystem.version | OS version |
hardware.os_build | operatingSystem.build | OS build number |
hardware.processor_type | hardware.processorType | Processor type |
hardware.processor_speed_mhz | hardware.processorSpeedMhz | Processor speed |
hardware.number_processors | hardware.processorCount | Number of processors |
hardware.number_cores | hardware.coreCount | Number of cores |
hardware.total_ram_mb | hardware.totalRamMegabytes | Total RAM in MB |
hardware.boot_rom | hardware.bootRom | Boot ROM version |
hardware.bus_speed_mhz | hardware.busSpeedMhz | Bus speed in MHz |
hardware.cache_size_kb | hardware.cacheSizeKilobytes | Cache size in KB |
hardware.nic_speed | hardware.nicSpeed | Network interface speed |
hardware.optical_drive | hardware.opticalDrive | Optical drive type |
hardware.smc_version | hardware.smcVersion | SMC version |
hardware.battery_capacity | hardware.batteryCapacityPercent | Battery capacity percentage |
hardware.supports_ios_app_installs | hardware.supportsIosAppInstalls | iOS app installation support |
hardware.apple_silicon | hardware.appleSilicon | Apple Silicon status |
operating_system.name | operatingSystem.name | OS name |
operating_system.version | operatingSystem.version | OS version |
operating_system.build | operatingSystem.build | OS build number |
operating_system.active_directory_status | operatingSystem.activeDirectoryStatus | Active Directory status |
operating_system.filevault2_status | operatingSystem.fileVault2Status | FileVault 2 status |
operating_system.supplemental_build_version | operatingSystem.supplementalBuildVersion | Supplemental build version |
operating_system.rapid_security_response | operatingSystem.rapidSecurityResponse | Rapid Security Response version |
security.activation_lock | security.activationLockEnabled | Activation Lock status |
security.secure_boot_level | security.secureBootLevel | Secure Boot level |
security.external_boot_level | security.externalBootLevel | External boot level |
security.firewall_enabled | security.firewallEnabled | Firewall status |
security.sip_status | security.sipStatus | System Integrity Protection status |
security.gatekeeper_status | security.gatekeeperStatus | Gatekeeper status |
security.xprotect_version | security.xprotectVersion | XProtect version |
security.auto_login_disabled | security.autoLoginDisabled | Auto-login disabled status |
security.remote_desktop_enabled | security.remoteDesktopEnabled | Remote Desktop status |
security.bootstrap_token_allowed | security.bootstrapTokenAllowed | Bootstrap token status |
location.username | userAndLocation.username | Username |
location.real_name | userAndLocation.realname | User's real name |
location.email_address | userAndLocation.email | Email address |
location.position | userAndLocation.position | Position/title |
location.phone | userAndLocation.phone | Phone number |
location.department_id | userAndLocation.departmentId | Department identifier |
location.building_id | userAndLocation.buildingId | Building identifier |
location.room | userAndLocation.room | Room identifier/name |
configuration_profiles.id | configurationProfiles[].id | Profile identifier |
configuration_profiles.name | configurationProfiles[].displayName | Profile name |
configuration_profiles.uuid | configurationProfiles[].profileIdentifier | Profile UUID |
configuration_profiles.username | configurationProfiles[].username | Associated username |
configuration_profiles.removable | configurationProfiles[].removable | Profile removable status |
printers.name | printers[].name | Printer name |
printers.uri | printers[].uri | Printer URI |
printers.type | printers[].type | Printer type |
printers.location | printers[].location | Printer location |
services.name | services[].name | Service name |
local_accounts.name | localUserAccounts[].username | Account username |
local_accounts.real_name | localUserAccounts[].fullName | User's full name |
local_accounts.uid | localUserAccounts[].uid | User ID |
local_accounts.home_directory | localUserAccounts[].homeDirectory | Home directory path |
local_accounts.administrator | localUserAccounts[].admin | Administrator status |
local_accounts.filevault_enabled | localUserAccounts[].fileVault2Enabled | FileVault 2 status |
local_accounts.password_min_length | localUserAccounts[].passwordMinLength | Minimum password length |
local_accounts.password_max_age | localUserAccounts[].passwordMaxAge | Maximum password age |
local_accounts.password_min_complex_characters | localUserAccounts[].passwordMinComplexCharacters | Minimum complex characters |
local_accounts.password_history_depth | localUserAccounts[].passwordHistoryDepth | Password history depth |
local_accounts.password_require_alphanumeric | localUserAccounts[].passwordRequireAlphanumeric | Alphanumeric requirement |
local_accounts.computer_azure_active_directory_id | localUserAccounts[].computerAzureActiveDirectoryId | Azure AD computer ID |
local_accounts.user_azure_active_directory_id | localUserAccounts[].userAzureActiveDirectoryId | Azure AD user ID |
local_accounts.azure_active_directory_id | localUserAccounts[].azureActiveDirectoryId | Azure AD status |
certificates.common_name | certificates[].commonName | Certificate common name |
certificates.identity | certificates[].identity | Identity certificate status |
certificates.expiration_date | certificates[].expirationDate | Expiration date |
certificates.username | certificates[].username | Associated username |
certificates.serial_number | certificates[].serialNumber | Certificate serial number |
certificates.sha1_fingerprint | certificates[].sha1Fingerprint | SHA1 fingerprint |
certificates.issued_date | certificates[].issuedDate | Issue date |
certificates.certificate_status | certificates[].certificateStatus | Certificate status |
certificates.lifecycle_status | certificates[].lifecycleStatus | Lifecycle status |
attachments.id | attachments[].id | Attachment ID |
attachments.name | attachments[].name | Attachment name |
attachments.file_type | attachments[].fileType | File type |
attachments.size_bytes | attachments[].sizeBytes | Size in bytes |
plugins.name | plugins[].name | Plugin name |
plugins.version | plugins[].version | Plugin version |
plugins.path | plugins[].path | Plugin path |
package_receipts.installer_swu | packageReceipts.installedByInstallerSwu | Software Update installed packages |
package_receipts.cached | packageReceipts.cached | Cached packages |
package_receipts.installed_by_casper | packageReceipts.installedByJamfPro | Jamf Pro installed packages |
fonts.name | fonts[].name | Font name |
fonts.version | fonts[].version | Font version |
fonts.path | fonts[].path | Font path |
licensed_software.id | licensedSoftware[].id | Software ID |
licensed_software.name | licensedSoftware[].name | Software name |
ibeacons.name | ibeacons[].name | iBeacon name |
available_software_updates.name | softwareUpdates[].name | Update name |
available_software_updates.version | softwareUpdates[].version | Update version |
available_software_updates.package_name | softwareUpdates[].packageName | Package name |
extension_attributes.id | extensionAttributes[].definitionId | Attribute ID |
extension_attributes.name | extensionAttributes[].name | Attribute name |
extension_attributes.type | extensionAttributes[].dataType | Data type |
extension_attributes.value | extensionAttributes[].values[] | Attribute values |
extension_attributes.multi_value | extensionAttributes[].multiValue | Multi-value status |
extension_attributes.enabled | extensionAttributes[].enabled | Enabled status |
extension_attributes.description | extensionAttributes[].description | Description |
extension_attributes.input_type | extensionAttributes[].inputType | Input type |
content_caching.active | contentCaching.active | Service active status |
content_caching.activated | contentCaching.activated | Service activated status |
content_caching.cache_status | contentCaching.cacheStatus | Cache status |
content_caching.cache_bytes_free | contentCaching.cacheBytesFree | Available cache space |
content_caching.cache_bytes_used | contentCaching.cacheBytesUsed | Used cache space |
content_caching.cache_bytes_limit | contentCaching.cacheBytesLimit | Cache size limit |
content_caching.port | contentCaching.port | Service port |
content_caching.public_address | contentCaching.publicAddress | Public address |
content_caching.server_guid | contentCaching.serverGuid | Server GUID |
content_caching.startup_status | contentCaching.startupStatus | Startup status |
content_caching.registration_status | contentCaching.registrationStatus | Registration status |
content_caching.registration_error | contentCaching.registrationError | Registration error |
content_caching.registration_response_code | contentCaching.registrationResponseCode | Registration response code |
content_caching.restricted_media | contentCaching.restrictedMedia | Restricted media status |
groups_accounts.computer_group_memberships | groupMemberships[].groupName | Group name |
groups_accounts.computer_group_memberships.group.id | groupMemberships[].groupId | Group ID |
groups_accounts.computer_group_memberships.group.is_smart | groupMemberships[].smartGroup | Smart group status |
Updated 11 days ago