Skip to content

hosts_list

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

Organization slug.

status
Array<string>

Repeatable. An unknown value matches nothing rather than being refused: host_status is a database enum this build does not mirror, so it must not claim to know every state a host can be in.

label
Array<string>

Repeatable, key=value. Several labels intersect, because a set of labels is a selector. Split on the first = only.

distro
Array<string>

Repeatable.

reboot_required
Array<string>

Repeatable: yes, no or unknown. Three-valued because the column is — a host that cannot answer is not a host answering no.

sort
string

hostname (default), last_seen or security_updates.

after
string

The hst_… id of the last host on the previous page.

A page of the fleet.

Media typeapplication/json
object
hosts
required
Array<object>
object
agent_install
One of:

How its agent was installed and the channel it follows. A package install updates only to builds its own repository’s channel holds. Absent: an agent too old to say.

object
channel

The channel the package repository follows, e.g. stable. Absent for a binary install, which can take a build from any channel.

string | null
method
required

apt or dnf (the package from pkg.updawg.net), binary (install.sh’s binaries, updated from the signed manifest), or other.

string
agent_mode
required

⚠️ A ceiling, not a setting. The host’s own agent.toml decides this; the server may narrow it and can never widen it. A portal that renders it as editable is describing a control that does not exist.

string
agent_permissions
required
Array<string>
agent_version
string | null
arch
required
string
display_name
string | null
distro
required
string
distro_version
required
string
enrolled_at
required
string format: date-time
frozen
One of:

Its package sources are pinned in time (DAWG-233): updates is measured against a snapshot that does not move. ⚠️ Zero updates on a frozen host is not “patched”, least of all when behind.

object
behind
required

Known to be behind what it is offered. false also when nobody can tell.

boolean
kind
required

releasever (dnf’s release is fixed: Amazon Linux 2023, or /etc/dnf/vars/releasever), snapshot (apt sources on a dated archive snapshot), or other from an agent newer than this server.

string
latest

The newest release it is offered, where its agent can tell.

string | null
pinned
required

What it is pinned to: 2023.5.20240805, 9.2, 20240101T000000Z.

string
hostname
required
string
id
required
string
kernel_version
string | null
labels
required

⚠️ A selector, not decoration. A policy that targets several labels intersects them, and the fleet filter takes them as repeatable key=value, so a client that cannot see the type cannot build either. String to string, enforced by hosts_labels_are_strings rather than asserted here (DAWG-261).

object
key
additional properties
string
last_inventory_at
string | null format: date-time
last_seen_at
string | null format: date-time
machine_id
required

Identity, and not the hostname. Hostnames change and repeat.

string
os_family
required
string
reboot_required

⚠️ Three-valued. null is “this host cannot say”, which is not false. A distribution with no way to answer must not read as “nothing to do here”.

boolean | null
services_need_restart
required
Array<string>
snapshots
One of:

Whether this host can take snapshots, and so be rolled back (DAWG-115). ⚠️ null is an agent too old to say, not a host that cannot: that one has a reason and no provider.

object
provider

The provider in use, e.g. snapper. Absent: none, and reason says why.

string | null
reason
string | null
status
required
string
updates
One of:

⚠️ null means never evaluated, not zero. A host that has never uploaded an inventory has never been looked at, and rendering that as “0 updates” tells somebody their unevaluated fleet is fully patched.

object
requiring_reboot
required

Updates that will leave the host needing a reboot — distinct from reboot_required, which is whether it needs one now.

integer format: int64
security
required
integer format: int64
total
required
integer format: int64
next
string | null
total
required
integer format: int64
Examplegenerated
{
"hosts": [
{
"agent_install": {
"channel": "example",
"method": "example"
},
"agent_mode": "example",
"agent_permissions": [
"example"
],
"agent_version": "example",
"arch": "example",
"display_name": "example",
"distro": "example",
"distro_version": "example",
"enrolled_at": "2026-04-15T12:00:00Z",
"frozen": {
"behind": true,
"kind": "example",
"latest": "example",
"pinned": "example"
},
"hostname": "example",
"id": "example",
"kernel_version": "example",
"labels": {
"additionalProperty": "example"
},
"last_inventory_at": "2026-04-15T12:00:00Z",
"last_seen_at": "2026-04-15T12:00:00Z",
"machine_id": "example",
"os_family": "example",
"reboot_required": true,
"services_need_restart": [
"example"
],
"snapshots": {
"provider": "example",
"reason": "example"
},
"status": "example",
"updates": {
"requiring_reboot": 1,
"security": 1,
"total": 1
}
}
],
"next": "example",
"total": 1
}

A filter, sort or cursor that cannot be honoured. Refused rather than ignored: a page that looks filtered and is not is the failure worth preventing.

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.

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"
}