Skip to content

Probe one discovered endpoint with the range scan's own machinery (ADR-179 Inc.2).

POST
/api/v1/discovered-endpoints/{id}/probe
curl --request POST \
--url https://example.com/api/v1/discovered-endpoints/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/probe \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "credential_ids": [ "example" ] }'

A one-address scan: the credentials are tried in order on the poller, the first that answers is reported as matched_credential_id, and core classifies the device into suggested_profile_id — so the Unregistered tab fills its two dropdowns by exactly the rule the Scan tab does. Nothing is imported; the operator reads the answer and decides.

Silent addresses are still asked over SNMP (SilentTargets::ProbeSnmp): this row exists because a neighbour, a peer or a sender vouched for the device, so a dropped ping is not evidence that nobody is there.

Routed to the observing node’s pool when that pool has a live poller — the poller that can reach the node that saw the address is the likeliest to reach the address — and to the global subject otherwise, the range scan’s own fallback.

id
required
string format: uuid

Discovered-endpoint id

Media typeapplication/json

Which stored credentials to try when probing one endpoint.

object
credential_ids

Stored credential ids, tried in this order; the first that answers wins, as in a range scan. Empty means “ICMP and nothing else”, which is allowed but tells the caller little.

Array<string>
Examplegenerated
{
"credential_ids": [
"example"
]
}

Probe accepted; poll its result by scan id

Media typeapplication/json

A probe accepted: read its result from GET /api/v1/discovery/scan/{scan_id}.

object
pool

The pool whose pollers were asked, or absent when the probe went to the global discovery subject — the observing node’s pool had no live poller, or no node observed the address.

string | null
scan_id
required
string format: uuid
Examplegenerated
{
"pool": "example",
"scan_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}

A named credential that is not a UUID, missing, or unusable

Media typeapplication/json

The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies undescribed — a client that has to guess the failure shape ends up parsing the success shape and reading undefined.

object
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

No valid bearer token

Media typeapplication/json

The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies undescribed — a client that has to guess the failure shape ends up parsing the success shape and reading undefined.

object
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

Role lacks ManageConfig

Media typeapplication/json

The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies undescribed — a client that has to guess the failure shape ends up parsing the success shape and reading undefined.

object
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

No such discovered endpoint, or not one the caller can see

Media typeapplication/json

The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies undescribed — a client that has to guess the failure shape ends up parsing the success shape and reading undefined.

object
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

That address is already a monitored node, or (sender_only) only a syslog or trap sender vouches for it — a sender’s address can be forged, so it is never probed

Media typeapplication/json

The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies undescribed — a client that has to guess the failure shape ends up parsing the success shape and reading undefined.

object
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

Skeleton mode has no write side, or this core is not the HA leader

Media typeapplication/json

The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies undescribed — a client that has to guess the failure shape ends up parsing the success shape and reading undefined.

object
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}