iOS/iPadOS as platforms/labels (#20126)
#19963
- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [X] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [X] Added/updated tests
- [X] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [X] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [X] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [X] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [X] Manual QA for all new/changed functionality
---
# API changes for dashboard UI changes
## Main dashboard page
`GET /api/latest/fleet/host_summary?low_disk_space=32` (see
`ios`/`ipados` platforms and `iOS`/`iPadOS` labels)
```json
{
"totals_hosts_count": 9,
"online_count": 0,
"offline_count": 9,
"mia_count": 0,
"missing_30_days_count": 0,
"new_count": 0,
"all_linux_count": 2,
"low_disk_space_count": 3,
"builtin_labels": [
{
"id": 1,
"name": "macOS 14+ (Sonoma+)",
"description": "macOS hosts with version 14 and above",
"label_type": "builtin"
},
{
"id": 7,
"name": "All Hosts",
"description": "All hosts which have enrolled in Fleet",
"label_type": "builtin"
},
{
"id": 8,
"name": "macOS",
"description": "All macOS hosts",
"label_type": "builtin"
},
{
"id": 9,
"name": "Ubuntu Linux",
"description": "All Ubuntu hosts",
"label_type": "builtin"
},
{
"id": 10,
"name": "CentOS Linux",
"description": "All CentOS hosts",
"label_type": "builtin"
},
{
"id": 11,
"name": "MS Windows",
"description": "All Windows hosts",
"label_type": "builtin"
},
{
"id": 12,
"name": "Red Hat Linux",
"description": "All Red Hat Enterprise Linux hosts",
"label_type": "builtin"
},
{
"id": 13,
"name": "All Linux",
"description": "All Linux distributions",
"label_type": "builtin"
},
{
"id": 14,
"name": "chrome",
"description": "All Chrome hosts",
"label_type": "builtin"
},
{
"id": 15,
"name": "iOS",
"description": "All iOS hosts",
"label_type": "builtin"
},
{
"id": 16,
"name": "iPadOS",
"description": "All iPadOS hosts",
"label_type": "builtin"
}
],
"platforms": [
{
"platform": "darwin",
"hosts_count": 3
},
{
"platform": "ios",
"hosts_count": 1
},
{
"platform": "ipados",
"hosts_count": 1
},
{
"platform": "rhel",
"hosts_count": 1
},
{
"platform": "ubuntu",
"hosts_count": 1
},
{
"platform": "windows",
"hosts_count": 2
}
]
}
```
## After selecting a platform
`GET /api/latest/fleet/host_summary?platform=ios&low_disk_space=100`
(similar with `ipados`)
```json
{
"totals_hosts_count": 1,
"online_count": 0,
"offline_count": 1,
"mia_count": 0,
"missing_30_days_count": 0,
"new_count": 0,
"all_linux_count": 0,
"low_disk_space_count": 1,
"builtin_labels": [
{
"id": 1,
"name": "macOS 14+ (Sonoma+)",
"description": "macOS hosts with version 14 and above",
"label_type": "builtin"
},
{
"id": 7,
"name": "All Hosts",
"description": "All hosts which have enrolled in Fleet",
"label_type": "builtin"
},
{
"id": 8,
"name": "macOS",
"description": "All macOS hosts",
"label_type": "builtin"
},
{
"id": 9,
"name": "Ubuntu Linux",
"description": "All Ubuntu hosts",
"label_type": "builtin"
},
{
"id": 10,
"name": "CentOS Linux",
"description": "All CentOS hosts",
"label_type": "builtin"
},
{
"id": 11,
"name": "MS Windows",
"description": "All Windows hosts",
"label_type": "builtin"
},
{
"id": 12,
"name": "Red Hat Linux",
"description": "All Red Hat Enterprise Linux hosts",
"label_type": "builtin"
},
{
"id": 13,
"name": "All Linux",
"description": "All Linux distributions",
"label_type": "builtin"
},
{
"id": 14,
"name": "chrome",
"description": "All Chrome hosts",
"label_type": "builtin"
},
{
"id": 15,
"name": "iOS",
"description": "All iOS hosts",
"label_type": "builtin"
},
{
"id": 16,
"name": "iPadOS",
"description": "All iPadOS hosts",
"label_type": "builtin"
}
],
"platforms": [
{
"platform": "ios",
"hosts_count": 1
}
]
}
```
### To populate list of MDM solutions of a selected platform
`GET /api/latest/fleet/hosts/summary/mdm\?platform=ios` (similar with
`ipados`)
```json
{
"counts_updated_at": "2024-06-27T21:56:45Z",
"mobile_device_management_enrollment_status": {
"enrolled_manual_hosts_count": 0,
"enrolled_automated_hosts_count": 1,
"pending_hosts_count": 0,
"unenrolled_hosts_count": 0,
"hosts_count": 1
},
"mobile_device_management_solution": [
{
"id": 1,
"name": "Fleet",
"server_url": "https://lucas-fleet.ngrok.app/mdm/apple/mdm",
"hosts_count": 1
}
]
}
```
### To populate OS versions of a selected platform
`GET /api/latest/fleet/os_versions?platform=ipados` (similar with `ios`)
```json
{
"meta": {
"has_next_results": false,
"has_previous_results": false
},
"count": 1,
"counts_updated_at": "2024-06-27T21:36:12Z",
"os_versions": [
{
"os_version_id": 7,
"hosts_count": 1,
"name": "iPadOS 17.5.1",
"name_only": "iPadOS",
"version": "17.5.1",
"platform": "ipados",
"vulnerabilities": []
}
]
}
```
## Filtering hosts by the two new `iOS`/`iPadOS` labels
Works the same as with other labels.