Monitor Robopatch flows
Use read requests to inspect an existing Robopatch flow, its deployments, and the current wave. This is useful for a deployment report or for investigating an app that is still rolling out.
Set ROBOPACK_API_KEY as described in Getting started. For the tenant access model, review Authentication and permissions. To create the flow and plan its waves in the portal, see Automating App Updates.
Find the flow
if ([string]::IsNullOrWhiteSpace($env:ROBOPACK_API_KEY)) {
throw 'Set ROBOPACK_API_KEY to your API key.'
}
$headers = @{ 'X-API-Key' = $env:ROBOPACK_API_KEY; Accept = 'application/json' }
$search = [uri]::EscapeDataString('7zip')
$flows = @(Invoke-RestMethod -Method Get -Headers $headers -ErrorAction Stop `
-Uri "https://api.robopack.com/v1/flow?Search=$search&ShowDeleted=false&DisablePaging=false&ItemsPerPage=50")
$flows | Select-Object id, name, appName, patchGroupName, state, deploymentCount |
Format-Table -AutoSize
$flowId = Read-Host 'Enter the non-empty id of the flow you reviewed'
This query returns the server's default page with up to 50 results. Use the paging guidance for a complete report. The flow list reference also documents AppId and tenant filters.
Read its deployments
$flow = Invoke-RestMethod -Method Get -Headers $headers -ErrorAction Stop `
-Uri "https://api.robopack.com/v1/flow/$flowId"
$flow.deployments | Select-Object id, version, state, isActive, packageId,
@{ Name = 'CurrentWaveId'; Expression = { $_.currentWave.id } },
@{ Name = 'CurrentWave'; Expression = { $_.currentWave.name } } |
Format-Table -AutoSize
Review the deployment's version and isActive value when selecting the deployment you want to investigate. The flow detail response exposes its deployment list, and each deployment can include a currentWave. That wave may be absent, so do not assume every deployment has a wave ID.
See flow details for the complete response model.
Inspect the current wave
Enter a non-empty CurrentWaveId from the reviewed deployment:
$waveId = Read-Host 'Enter the CurrentWaveId of the deployment you reviewed'
$wave = Invoke-RestMethod -Method Get -Headers $headers -ErrorAction Stop `
-Uri "https://api.robopack.com/v1/flow/wave/$waveId"
$wave | Select-Object id, name, state, startedAt, completedAt,
minimumAttemptRatePercent, minimumSuccessRatePercent,
maximumRuntimeHours, delayAfterCompletionHours
The wave detail reference includes targets, status, and configuration. State values are strings in the schema rather than a documented enum, so retain their actual values in reports instead of inventing a fixed list.
Read live installation data
The live endpoint gets data from Intune for the selected wave. Its response is an array of objects with nested tenant data:
$live = @(Invoke-RestMethod -Method Get -Headers $headers -ErrorAction Stop `
-Uri "https://api.robopack.com/v1/flow/wave/$waveId/live")
$deviceRows = foreach ($item in $live) {
foreach ($tenant in $item.tenants) {
foreach ($device in $tenant.deviceInstalls) {
[pscustomobject]@{
Tenant = $tenant.tenantDisplayName
DeviceId = $device.deviceId
DeviceName = $device.deviceName
InstallState = $device.installState
ErrorCode = $device.errorCode
ErrorDescription = $device.errorDescription
LastModified = $device.lastModifiedDateTime
}
}
}
}
$deviceRows | Format-Table -AutoSize
Tenant results also include userInstalls, with installed, failed, and pending counts per user. See live wave data for the full response shape. A reported Intune error code of 0x0 (0) indicates success; see the FAQ explanation.
Interpret wave progress
Wave thresholds are percentages of targeted devices that have checked in and picked up the assignment, rather than the entire membership of an Entra ID group. A small number of successful devices can therefore satisfy the thresholds. Read How the wave thresholds are calculated before interpreting the report as overall group coverage.
A wave's time limit can advance it even when thresholds have not been met. Pausing a wave in Robopack also leaves the Intune assignment active. These behaviors are covered in Known Limitations.
Monitoring does not require you to start, stop, skip, refresh, or delete a deployment. If you decide to perform one of those actions, review its operation in the API reference and the target deployment first. Those operations modify state, and deletion options can also remove apps from Intune.