Skip to content

Depot discovery

Registers the discovery routes on the tenant API.

This page is generated from the Depot route table. Every operation carries the permission it needs and the anchor an agent can link to.

POSTdiscovery:deploytenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

deploy push-installs the agent onto seen or suggested devices of one network through one scanning agent and one credential.

Answers 202 with the jobs.

Required, sent as application/json.

FieldTypeDescription
credentialrequiredDiscoveryDeployCredential
credential.credentialIdstring or null
credential.secretstring or null
credential.sourcerequiredstring
credential.usernamestring or null
deviceIdsrequiredarray of string
methodrequiredstring
viaAgentIdstring or null
StatusBodyDescription
202application/json, DiscoveryDeployResponseAccepted.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsDeploying with a vault credential needs permission to use vault credentials.
404application/problem+json, ProblemDetailsCredential not found.
409application/problem+json, ProblemDetailsOne or more devices already have a deploy in progress or are not waiting to be managed.
422application/problem+json, ProblemDetailsAll devices in one deploy must be on the same network.
500application/problem+json, ProblemDetailsNo client store in request context.

202 response body

FieldTypeDescription
jobsrequiredarray of DiscoveryDeployJobView
jobs[].completedAtstring (date-time) or null
jobs[].createdAtrequiredstring (date-time)
jobs[].createdByUserIdstring or null
jobs[].credentialIdstring or null
jobs[].credentialSourcerequiredstring
jobs[].deviceHostnamestring or null
jobs[].deviceIdstring or null
jobs[].deviceIpstring or null
jobs[].deviceMacrequiredstring
jobs[].dispatchedAtstring (date-time) or null
jobs[].failureCodestring or null
jobs[].failureDetailstring or null
jobs[].lastProgressAtstring (date-time) or null
jobs[].methodrequiredstring
jobs[].platformstring or null
jobs[].publicIdrequiredstring
jobs[].resultAgentIdstring or null
jobs[].stagestring or null
jobs[].staterequiredstring
jobs[].viaAgentIdstring or null
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X POST 'https://depot.example.com/api/v1/discovery/deploy' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"credential": {
"credentialId": "string",
"secret": "string",
"source": "string",
"username": "string"
},
"deviceIds": [
"string"
],
"method": "string",
"viaAgentId": "string"
}'

GETdiscovery:readtenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listDeployJobs pages deploy jobs, newest first.

NameInTypeRequiredDescription
devicequerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
statequerystring, one of awaiting_enrollment, cancelled, failed, installing, managed, preflight, queuedNoComma-separated set. An unrecognised value is refused.
StatusBodyDescription
200application/json, PagedResultDiscoveryDeployJobViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:read.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
itemsrequiredarray of DiscoveryDeployJobView
items[].completedAtstring (date-time) or null
items[].createdAtrequiredstring (date-time)
items[].createdByUserIdstring or null
items[].credentialIdstring or null
items[].credentialSourcerequiredstring
items[].deviceHostnamestring or null
items[].deviceIdstring or null
items[].deviceIpstring or null
items[].deviceMacrequiredstring
items[].dispatchedAtstring (date-time) or null
items[].failureCodestring or null
items[].failureDetailstring or null
items[].lastProgressAtstring (date-time) or null
items[].methodrequiredstring
items[].platformstring or null
items[].publicIdrequiredstring
items[].resultAgentIdstring or null
items[].stagestring or null
items[].staterequiredstring
items[].viaAgentIdstring or null
pagerequiredinteger
pageSizerequiredinteger
totalrequiredinteger
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/discovery/deploy-jobs?device=<device>&page=0&pageSize=0&state=awaiting_enrollment' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/discovery/deploy-jobs/{publicId}/cancel

Section titled “POST /api/v1/discovery/deploy-jobs/{publicId}/cancel”

POSTdiscovery:deploytenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

cancelDeployJob cancels an open deploy job.

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.
StatusBodyDescription
200application/json, DiscoveryDeployJobViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:deploy.
404application/problem+json, ProblemDetailsNo resource matches that id.
409application/problem+json, ProblemDetailsThis deploy job has already finished.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
completedAtstring (date-time) or null
createdAtrequiredstring (date-time)
createdByUserIdstring or null
credentialIdstring or null
credentialSourcerequiredstring
deviceHostnamestring or null
deviceIdstring or null
deviceIpstring or null
deviceMacrequiredstring
dispatchedAtstring (date-time) or null
failureCodestring or null
failureDetailstring or null
lastProgressAtstring (date-time) or null
methodrequiredstring
platformstring or null
publicIdrequiredstring
resultAgentIdstring or null
stagestring or null
staterequiredstring
viaAgentIdstring or null
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X POST 'https://depot.example.com/api/v1/discovery/deploy-jobs/<publicId>/cancel' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETdiscovery:readtenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listDevices pages the devices seen on the client’s networks.

With no status filter every status except ignored is listed.

NameInTypeRequiredDescription
networkquerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
qquerystringNoFree-text search term.
sitequerystringNo
statusquerystring, one of deploying, ignored, managed, seen, suggested, trackedNoComma-separated set. An unrecognised value is refused.
StatusBodyDescription
200application/json, PagedResultDiscoveryDeviceViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:read.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
itemsrequiredarray of DiscoveryDeviceView
items[].deployMethodsrequiredarray of string
items[].detectedTyperequiredstring
items[].deviceTyperequiredstring
items[].firstSeenAtrequiredstring (date-time)
items[].hostnamestring or null
items[].ignoredUntilstring (date-time) or null
items[].ipstring or null
items[].lastSeenAtrequiredstring (date-time)
items[].macrequiredstring
items[].macRandomizedrequiredboolean
items[].manageablerequiredboolean
items[].matchedAgentIdstring or null
items[].networkIdrequiredstring
items[].openJobIdstring or null
items[].publicIdrequiredstring
items[].roamingarray of RoamingNote
items[].roaming[].agentIdsrequiredarray of string
items[].roaming[].clientIdrequiredstring
items[].roaming[].clientNamerequiredstring
items[].roaming[].kindsrequiredarray of string
items[].siteIdstring or null
items[].statusrequiredstring
items[].statusByUserIdstring or null
items[].statusChangedAtrequiredstring (date-time)
items[].typeConfidencerequiredinteger
items[].typeOverridestring or null
items[].vendorstring or null
pagerequiredinteger
pageSizerequiredinteger
totalrequiredinteger
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/discovery/devices?network=<network>&page=0&pageSize=0&q=<q>&site=<site>&status=deploying' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETdiscovery:readtenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Get device

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.
StatusBodyDescription
200application/json, DiscoveryDeviceDetailSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
deployMethodsrequiredarray of string
detectedTyperequiredstring
deviceTyperequiredstring
evidencerequiredany

Arbitrary JSON.

firmwarerequiredstring
firstSeenAtrequiredstring (date-time)
hostnamestring or null
ignoredUntilstring (date-time) or null
ipstring or null
lastSeenAtrequiredstring (date-time)
macrequiredstring
macRandomizedrequiredboolean
manageablerequiredboolean
matchedAgentIdstring or null
modelrequiredstring
networkIdrequiredstring
notesrequiredstring
openJobIdstring or null
publicIdrequiredstring
roamingarray of RoamingNote
roaming[].agentIdsrequiredarray of string
roaming[].clientIdrequiredstring
roaming[].clientNamerequiredstring
roaming[].kindsrequiredarray of string
siteIdstring or null
statusrequiredstring
statusByUserIdstring or null
statusChangedAtrequiredstring (date-time)
typeConfidencerequiredinteger
typeOverridestring or null
vendorstring or null
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/discovery/devices/<publicId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCH /api/v1/discovery/devices/{publicId}

Section titled “PATCH /api/v1/discovery/devices/{publicId}”

PATCHdiscovery:managetenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Patch device

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.

Required, sent as application/json.

The body is object.

StatusBodyDescription
200application/json, DiscoveryDeviceDetailSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
409application/problem+json, ProblemDetailsCould not update the device.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
deployMethodsrequiredarray of string
detectedTyperequiredstring
deviceTyperequiredstring
evidencerequiredany

Arbitrary JSON.

firmwarerequiredstring
firstSeenAtrequiredstring (date-time)
hostnamestring or null
ignoredUntilstring (date-time) or null
ipstring or null
lastSeenAtrequiredstring (date-time)
macrequiredstring
macRandomizedrequiredboolean
manageablerequiredboolean
matchedAgentIdstring or null
modelrequiredstring
networkIdrequiredstring
notesrequiredstring
openJobIdstring or null
publicIdrequiredstring
roamingarray of RoamingNote
roaming[].agentIdsrequiredarray of string
roaming[].clientIdrequiredstring
roaming[].clientNamerequiredstring
roaming[].kindsrequiredarray of string
siteIdstring or null
statusrequiredstring
statusByUserIdstring or null
statusChangedAtrequiredstring (date-time)
typeConfidencerequiredinteger
typeOverridestring or null
vendorstring or null
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PATCH 'https://depot.example.com/api/v1/discovery/devices/<publicId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"key": "string"
}'

DELETE /api/v1/discovery/devices/{publicId}

Section titled “DELETE /api/v1/discovery/devices/{publicId}”

DELETEdiscovery:managetenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

deleteDevice removes one device row.

A device being deployed to is kept.

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
409application/problem+json, ProblemDetailsThis device is being deployed to and cannot be removed.
500application/problem+json, ProblemDetailsNo client store in request context.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X DELETE 'https://depot.example.com/api/v1/discovery/devices/<publicId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/discovery/devices/{publicId}/snmp

Section titled “GET /api/v1/discovery/devices/{publicId}/snmp”

GETdiscovery:readtenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Get SNMP

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.
StatusBodyDescription
200application/json, SNMPDeviceSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsSNMP monitoring is unavailable.

200 response body

FieldTypeDescription
collectorIdstring
connectionrequiredConnection
connection.credentialIdrequiredstring
connection.enabledrequiredboolean
connection.intervalSecondsrequiredinteger
connection.monitorsrequiredarray of Monitor
connection.monitors[].alertAlert
connection.monitors[].alert.breachesrequiredinteger
connection.monitors[].alert.operatorrequiredstring
connection.monitors[].alert.recoveriesrequiredinteger
connection.monitors[].alert.severityrequiredstring
connection.monitors[].alert.valuestring
connection.monitors[].idrequiredstring
connection.monitors[].kindrequiredstring
connection.monitors[].labelsobject
connection.monitors[].namerequiredstring
connection.monitors[].offsetnumber

double.

connection.monitors[].oidrequiredstring
connection.monitors[].scalerequirednumber

double.

connection.monitors[].unitstring
connection.overridesobject
connection.portrequiredinteger
connection.retentionDaysrequiredinteger
connection.templateIdstring
connection.templateRevisioninteger

int64.

connection.windowEndstring
connection.windowStartstring
credentialRevisionrequiredinteger

int64.

detectedOptions
detected.authProtocolstring
detected.contextNamestring
detected.modestring
detected.privProtocolstring
detected.samePasswordboolean
detected.securityLevelstring
detected.usernamestring
detected.versionrequiredstring
detectedAtstring (date-time) or null
deviceIdrequiredstring
failuresrequiredinteger
lastDetectedAtstring (date-time) or null
lastSuccessAtstring (date-time) or null
nextPollAtrequiredstring (date-time)
revisionrequiredinteger

int64.

statusrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/discovery/devices/<publicId>/snmp' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUT /api/v1/discovery/devices/{publicId}/snmp

Section titled “PUT /api/v1/discovery/devices/{publicId}/snmp”

PUTdiscovery:managetenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Put SNMP

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
connectionrequiredConnection
connection.credentialIdrequiredstring
connection.enabledrequiredboolean
connection.intervalSecondsrequiredinteger
connection.monitorsrequiredarray of Monitor
connection.monitors[].alertAlert
connection.monitors[].alert.breachesrequiredinteger
connection.monitors[].alert.operatorrequiredstring
connection.monitors[].alert.recoveriesrequiredinteger
connection.monitors[].alert.severityrequiredstring
connection.monitors[].alert.valuestring
connection.monitors[].idrequiredstring
connection.monitors[].kindrequiredstring
connection.monitors[].labelsobject
connection.monitors[].namerequiredstring
connection.monitors[].offsetnumber

double.

connection.monitors[].oidrequiredstring
connection.monitors[].scalerequirednumber

double.

connection.monitors[].unitstring
connection.overridesobject
connection.portrequiredinteger
connection.retentionDaysrequiredinteger
connection.templateIdstring
connection.templateRevisioninteger

int64.

connection.windowEndstring
connection.windowStartstring
revisionrequiredinteger

int64.

StatusBodyDescription
200application/json, SNMPDeviceSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsDeploying with a vault credential needs permission to use vault credentials.
404application/problem+json, ProblemDetailsNo resource matches that id.
409application/problem+json, ProblemDetailsImport the unmanaged device before enabling monitoring, or reload settings changed by another technician.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsSNMP monitoring is unavailable.

200 response body

FieldTypeDescription
collectorIdstring
connectionrequiredConnection
connection.credentialIdrequiredstring
connection.enabledrequiredboolean
connection.intervalSecondsrequiredinteger
connection.monitorsrequiredarray of Monitor
connection.monitors[].alertAlert
connection.monitors[].alert.breachesrequiredinteger
connection.monitors[].alert.operatorrequiredstring
connection.monitors[].alert.recoveriesrequiredinteger
connection.monitors[].alert.severityrequiredstring
connection.monitors[].alert.valuestring
connection.monitors[].idrequiredstring
connection.monitors[].kindrequiredstring
connection.monitors[].labelsobject
connection.monitors[].namerequiredstring
connection.monitors[].offsetnumber

double.

connection.monitors[].oidrequiredstring
connection.monitors[].scalerequirednumber

double.

connection.monitors[].unitstring
connection.overridesobject
connection.portrequiredinteger
connection.retentionDaysrequiredinteger
connection.templateIdstring
connection.templateRevisioninteger

int64.

connection.windowEndstring
connection.windowStartstring
credentialRevisionrequiredinteger

int64.

detectedOptions
detected.authProtocolstring
detected.contextNamestring
detected.modestring
detected.privProtocolstring
detected.samePasswordboolean
detected.securityLevelstring
detected.usernamestring
detected.versionrequiredstring
detectedAtstring (date-time) or null
deviceIdrequiredstring
failuresrequiredinteger
lastDetectedAtstring (date-time) or null
lastSuccessAtstring (date-time) or null
nextPollAtrequiredstring (date-time)
revisionrequiredinteger

int64.

statusrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PUT 'https://depot.example.com/api/v1/discovery/devices/<publicId>/snmp' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"connection": {
"credentialId": "string",
"enabled": false,
"intervalSeconds": 0,
"monitors": [
{
"alert": {
"breaches": 0,
"operator": "string",
"recoveries": 0,
"severity": "string",
"value": "string"
},
"id": "string",
"kind": "string",
"labels": {
"key": "string"
},
"name": "string",
"offset": 0,
"oid": "string",
"scale": 0,
"unit": "string"
}
],
"overrides": {
"key": {
"alert": {
"breaches": 0,
"operator": "string",
"recoveries": 0,
"severity": "string",
"value": "string"
},
"id": "string",
"kind": "string",
"labels": {
"key": "string"
},
"name": "string",
"offset": 0,
"oid": "string",
"scale": 0,
"unit": "string"
}
},
"port": 0,
"retentionDays": 0,
"templateId": "string",
"templateRevision": 0,
"windowEnd": "string",
"windowStart": "string"
},
"revision": 0
}'

GET /api/v1/discovery/devices/{publicId}/snmp/history

Section titled “GET /api/v1/discovery/devices/{publicId}/snmp/history”

GETdiscovery:readtenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Snmp history

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.
beforequerystringNo
limitquerystringNo
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsSNMP monitoring is unavailable.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/discovery/devices/<publicId>/snmp/history?before=<before>&limit=<limit>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/discovery/devices/{publicId}/snmp/jobs

Section titled “POST /api/v1/discovery/devices/{publicId}/snmp/jobs”

POSTdiscovery:managetenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Start SNMP

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
operationrequiredstring
rootrequiredstring
StatusBodyDescription
202application/json, objectAccepted.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsDeploying with a vault credential needs permission to use vault credentials.
404application/problem+json, ProblemDetailsNo resource matches that id.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsSNMP monitoring is unavailable.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X POST 'https://depot.example.com/api/v1/discovery/devices/<publicId>/snmp/jobs' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"operation": "string",
"root": "string"
}'

GET /api/v1/discovery/devices/{publicId}/snmp/jobs/{commandId}

Section titled “GET /api/v1/discovery/devices/{publicId}/snmp/jobs/{commandId}”

GETdiscovery:readtenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Get SNMP job

NameInTypeRequiredDescription
commandIdpathstringYesA uuid.
publicIdpathstringYesA uuid.
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsSNMP monitoring is unavailable.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/discovery/devices/<publicId>/snmp/jobs/<commandId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTdiscovery:managetenant facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

ignoreDevices hides seen or suggested devices until a time, for 90 days by default, or permanently.

Other statuses and unknown ids are skipped.

Required, sent as application/json.

FieldTypeDescription
idsrequiredarray of string
permanentrequiredboolean
untilstring (date-time) or null
StatusBodyDescription
200application/json, DiscoveryChangedResponseSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:manage.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
changedrequiredinteger
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/discovery/devices/ignore' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"ids": [
"string"
],
"permanent": false,
"until": "2026-01-01T00:00:00Z"
}'

POSTdiscovery:managetenant facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Track devices

Required, sent as application/json.

FieldTypeDescription
idsrequiredarray of string
StatusBodyDescription
200application/json, DiscoveryChangedResponseSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:manage.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
changedrequiredinteger
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/discovery/devices/track' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"ids": [
"string"
]
}'

POSTdiscovery:managetenant facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

unignoreDevices moves ignored devices back to seen.

Required, sent as application/json.

FieldTypeDescription
idsrequiredarray of string
StatusBodyDescription
200application/json, DiscoveryChangedResponseSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:manage.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
changedrequiredinteger
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/discovery/devices/unignore' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"ids": [
"string"
]
}'

POSTdiscovery:managetenant facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Untrack devices

Required, sent as application/json.

FieldTypeDescription
idsrequiredarray of string
StatusBodyDescription
200application/json, DiscoveryChangedResponseSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:manage.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
changedrequiredinteger
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/discovery/devices/untrack' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"ids": [
"string"
]
}'

GETdiscovery:readtenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

getEnablement reports whether network discovery is on for the whole client.

StatusBodyDescription
200application/json, DiscoveryEnablementViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:read.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
enabledrequiredboolean
profileIdstring or null
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/discovery/enablement' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUTdiscovery:managetenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

putEnablement turns network discovery on or off for the whole client by assigning or unassigning the built-in Network Discovery profile.

Required, sent as application/json.

FieldTypeDescription
enabledboolean or null
StatusBodyDescription
200application/json, DiscoveryEnablementViewSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:manage.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsThe Network Discovery profile is not installed on this server yet.

200 response body

FieldTypeDescription
enabledrequiredboolean
profileIdstring or null
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PUT 'https://depot.example.com/api/v1/discovery/enablement' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"enabled": false
}'

GETdiscovery:readtenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listNetworks pages the client’s discovered networks, most recently seen first.

NameInTypeRequiredDescription
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
StatusBodyDescription
200application/json, PagedResultDiscoveryNetworkViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:read.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
itemsrequiredarray of DiscoveryNetworkView
items[].adminDeniedrequiredboolean
items[].agentCountrequiredinteger
items[].cidrrequiredstring
items[].deviceCountrequiredinteger
items[].dnsSuffixstring or null
items[].firstSeenAtrequiredstring (date-time)
items[].gatewayIpstring or null
items[].gatewayMacrequiredstring
items[].lastSeenAtrequiredstring (date-time)
items[].lastSweepAtstring (date-time) or null
items[].publicIdrequiredstring
items[].scannerAgentIdstring or null
items[].scannerElectedAtstring (date-time) or null
items[].scannerHostnamestring or null
items[].siteIdstring or null
items[].suggestedCountrequiredinteger
items[].trustReasonstring or null
items[].trustedrequiredboolean
pagerequiredinteger
pageSizerequiredinteger
totalrequiredinteger
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/discovery/networks?page=0&pageSize=0' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/discovery/networks/{publicId}/scan

Section titled “POST /api/v1/discovery/networks/{publicId}/scan”

POSTdiscovery:managetenant facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

scanNetwork asks the network’s elected scanner for a sweep now.

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.
StatusBodyDescription
202application/json, DiscoveryScanResponseAccepted.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
422application/problem+json, ProblemDetailsThis network has no scanning agent yet.
429application/problem+json, ProblemDetailsThis network was scanned in the last 5 minutes. Try again shortly.
500application/problem+json, ProblemDetailsNo client store in request context.

202 response body

FieldTypeDescription
commandIdrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/discovery/networks/<publicId>/scan' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/discovery/networks/{publicId}/trust

Section titled “POST /api/v1/discovery/networks/{publicId}/trust”

POSTdiscovery:managetenant facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

decideNetwork records the operator’s trust decision: trust, deny or auto.

NameInTypeRequiredDescription
publicIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
decisionrequiredstring
StatusBodyDescription
200application/json, DiscoveryNetworkViewSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold discovery:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
adminDeniedrequiredboolean
agentCountrequiredinteger
cidrrequiredstring
deviceCountrequiredinteger
dnsSuffixstring or null
firstSeenAtrequiredstring (date-time)
gatewayIpstring or null
gatewayMacrequiredstring
lastSeenAtrequiredstring (date-time)
lastSweepAtstring (date-time) or null
publicIdrequiredstring
scannerAgentIdstring or null
scannerElectedAtstring (date-time) or null
scannerHostnamestring or null
siteIdstring or null
suggestedCountrequiredinteger
trustReasonstring or null
trustedrequiredboolean
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/discovery/networks/<publicId>/trust' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"decision": "string"
}'

Content is licensed CC BY 4.0. Code samples are MIT. Outpost and the Outpost mark are trademarks of Outpost Business Solutions, PBC and are not covered by either license.