Skip to content

`GET /v1/orgs/{org}/compliance/report`.

GET
/v1/orgs/{org}/compliance/report
curl --request GET \
--url https://api.updawg.net/v1/orgs/example/compliance/report
org
required
string

Organization slug.

since
string format: date-time

Start of the patch-latency period (RFC 3339). Default: 90 days before until.

until
string format: date-time

End of the period, exclusive. Default: now.

group
string

Only the hosts this group (grp_…) resolves to now.

Patch latency over the period, and the fleet’s standing now.

Media typeapplication/json
object
generated_at
required
string format: date-time
group
One of:

Absent for the whole organization.

object
id
required
string
name
required
string
latency
required

Patch latency per severity, worst first.

Array<object>
object
mean_hours
required
number format: double
median_hours
required

Hours from a fix being available to it being installed.

number format: double
p90_hours
required
number format: double
resolved
required

Exposures to this severity that ended in the period.

integer format: int64
severity

critical, high, medium, low or none; absent for advisories nobody rated.

string | null
target_days

The organization’s target for this severity; absent for none and unrated.

integer | null format: int32
within_target

How many of resolved were within the target.

integer | null format: int64
latency_by_group
required

The same, per group, groups by name. A host in two groups counts in both.

Array<object>
object
group
required
object
id
required
string
name
required
string
latency
required
Array<object>
object
mean_hours
required
number format: double
median_hours
required

Hours from a fix being available to it being installed.

number format: double
p90_hours
required
number format: double
resolved
required

Exposures to this severity that ended in the period.

integer format: int64
severity

critical, high, medium, low or none; absent for advisories nobody rated.

string | null
target_days

The organization’s target for this severity; absent for none and unrated.

integer | null format: int32
within_target

How many of resolved were within the target.

integer | null format: int64
overdue
required

Open exposures past their target, longest overdue first.

Array<object>
object
advisory
required

USN-7012-1, DSA-5800-1, …

string
due_at
required

When it fell due: fixable_since plus target_days.

string format: date-time
fixable_since
required

When an update reaching the fix became available.

string format: date-time
host_id
required
string
hostname
required
string
package
required
string
severity
required
string
target_days
required
integer format: int32
overdue_truncated
required

More are overdue than overdue lists; the hosts export has every host’s count.

boolean
since
required

The period patch latency covers.

string format: date-time
summary
required

The fleet as of generated_at.

object
active
required
integer format: int64
end_of_life
required

Every support tier of the host’s release has ended.

integer format: int64
hosts
required

Hosts in scope that are not decommissioned.

integer format: int64
outside_targets
required
integer format: int64
overdue_exposures
required

Open fixable exposures past their target, across all hosts.

integer format: int64
past_standard_support
required

Standard support has ended, whether or not extended support has.

integer format: int64
reboot_required
required
integer format: int64
stale
required
integer format: int64
within_targets
required

No fixable exposure older than its severity’s target.

integer format: int64
targets
required
object
critical
required

Days to patch a fixable critical exposure. 1 to 365.

integer format: int32
high
required
integer format: int32
low
required
integer format: int32
medium
required
integer format: int32
until
required
string format: date-time
Examplegenerated
{
"generated_at": "2026-04-15T12:00:00Z",
"group": {
"id": "example",
"name": "example"
},
"latency": [
{
"mean_hours": 1,
"median_hours": 1,
"p90_hours": 1,
"resolved": 1,
"severity": "example",
"target_days": 1,
"within_target": 1
}
],
"latency_by_group": [
{
"group": {
"id": "example",
"name": "example"
},
"latency": [
{
"mean_hours": 1,
"median_hours": 1,
"p90_hours": 1,
"resolved": 1,
"severity": "example",
"target_days": 1,
"within_target": 1
}
]
}
],
"overdue": [
{
"advisory": "example",
"due_at": "2026-04-15T12:00:00Z",
"fixable_since": "2026-04-15T12:00:00Z",
"host_id": "example",
"hostname": "example",
"package": "example",
"severity": "example",
"target_days": 1
}
],
"overdue_truncated": true,
"since": "2026-04-15T12:00:00Z",
"summary": {
"active": 1,
"end_of_life": 1,
"hosts": 1,
"outside_targets": 1,
"overdue_exposures": 1,
"past_standard_support": 1,
"reboot_required": 1,
"stale": 1,
"within_targets": 1
},
"targets": {
"critical": 1,
"high": 1,
"low": 1,
"medium": 1
},
"until": "2026-04-15T12:00:00Z"
}

An unknown or repeated parameter, a time that does not parse, a period that is backwards or longer than 400 days, or a group that is not here.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

No session.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

Not permitted for this role. Or the plan does not include compliance reports (Business): plan-required.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

No such organization, or not yours.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

Over the organization’s request limit. Retry-After says when to try again; RateLimit-Limit is the burst.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}