Document the Android-only host vitals in the REST API reference - #52603
Open
dantecatalfamo wants to merge 2 commits into
Open
Document the Android-only host vitals in the REST API reference#52603dantecatalfamo wants to merge 2 commits into
dantecatalfamo wants to merge 2 commits into
Conversation
dantecatalfamo
temporarily deployed
to
Docker Hub
September 4, 2026 18:40 — with
GitHub Actions
Inactive
Contributor
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
The Android vitals from AMAPI status reports flatten into the responses of the three single-host endpoints, but nothing in the reference said so. Add an Android response example alongside the existing macOS and iOS/iPadOS ones for "Get host" and "Get host by identifier", and note in all three sections which fields are Android-only, that a vital the device didn't report is omitted rather than null, and that the phone numbers and radio identifiers are company-owned only.
Review of the first pass turned up claims the code doesn't back: - The status reporting caveat named a securityPosture setting that AMAPI has no such member for, misspelled deviceSettingsEnabled, and described admin-controlled gating that can't happen — applyFleetEnforcedSettings overwrites StatusReportingSettings on every policy Fleet applies. - Android hosts can't reach GET /api/v1/fleet/device/:token at all, so the note now says that instead of describing vitals it would return. - Say the phone numbers and radio identifiers are withheld from personal enrollments, which is the gate getHostDetails actually applies, rather than framing it as a company-owned-only feature. - Note that posture advice is AMAPI's non-localized default message. The example gained the fields the response always carries (os_update_minimum_version, os_update_deadline, batteries), lost the geolocation object an Android host can't have with no public_ip, and now uses the cpu_type, computer name and phone number format the ingestion really produces. The identifier example answers with the UUID it's looked up by.
dantecatalfamo
force-pushed
the
51205-android-vitals-api-docs
branch
from
September 4, 2026 18:53
2fd8dab to
b43aed8
Compare
dantecatalfamo
temporarily deployed
to
Docker Hub
September 4, 2026 18:53 — with
GitHub Actions
Inactive
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related issue: Resolves #51205
Documents the Android host vitals that #51202 already flattens into the single-host API responses. Documentation only — no code changes.
GET /api/v1/fleet/hosts/:idandGET /api/v1/fleet/hosts/identifier/:identifiereach get an#### Example (Android)response alongside the existing macOS and iOS/iPadOS ones, plus note bullets covering all 15 Android-only fields.GET /api/v1/fleet/device/:tokengets a note saying Android hosts can't reach it. The story asked for the vitals to be documented there too, but they can't appear:HostDeviceURLrejectsandroidoutright, Android hosts never get a Fleet Desktop token, and certificate auth is iOS/iPadOS-only. Saying so seemed better than documenting a response nobody can get.meidis described in the notes but deliberately absent from the example — a device reportsimeiormeiddepending on its radio, never both.Everything documented was checked against the merged implementation with a script: every field name matches a
json:tag onHostMDMAndroidDeviceVitals/MDMAndroidTelephonyInfo/MDMAndroidPostureDetail, every key in the example maps to a real tag somewhere inserver/fleetorserver/service, the cited AMAPI enum values all exist in the vendored client, and the two example blocks differ only in theuuideach endpoint is looked up by.One pre-existing line changed: the "Get host by identifier" note's lead sentence became a bare
> Note:followed by a bullet, matching the equivalent block under "Get host". Without that, the appended Android bullets read as though they were also "supported only for iOS/iPadOS".Checklist for submitter
Changes file added for user-visible changes in
changes/,orbit/changes/oree/fleetd-chrome/changes.See Changes files for more information.
N/A — documentation only, no user-visible product change.
Testing
Verified locally:
// Available in Fleet Premiuminline comment) and differ only inuuid.json:tags onHostMDMAndroidDeviceVitalsappear in each note's field list — exact set match, no extras or omissions.telephony_infos[]andsecurity_posture_details[]keys match their structs exactly.additional,disk_encryption_enabled,geolocation,maintenance_window, andusers, allomitemptyand genuinely absent for an Android host.[here]/[click here]anchor check passes; the new AMAPI link returns 200; both internal anchors (#get-host,#get-host-by-identifier) exist.To review against a real device: enroll a fully managed Android host and confirm
GET /api/v1/fleet/hosts/:idreturns the vitals as documented, then confirm a BYOD host returns notelephony_infos,imei, ormeid.