Skip to content

Depot softwareinventory

Registers the installed-software reads.

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

GETsoftware:readtenant facehosteditmspremoteIdempotentdownload

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

Source: [object Object]

getSoftwareInventoryReport answers the same table rolled up by product and version, which is what an inventory report is for: how many copies, and how many of them are behind.

?format=csv and ?format=pdf render the same rows as a download, per the contracts document. They are the same query and the same cap answered in two more encodings, not two more reports: a spreadsheet is where a licence reconciliation actually happens, a PDF is what gets attached to it, and the alternative to both is somebody copying numbers off a screen.

NameInTypeRequiredDescription
agentIdquerystringNo
dirquerystring, one of asc, descNoSort direction.
formatquerystringNo
includeRemovedquerystringNo
namequerystringNo
publisherquerystringNo
qquerystringNoFree-text search term.
scopequerystringNo
sortquerystring, one of hostname, lastSeen, name, publisher, versionNoSort key.
versionquerystringNo
StatusBodyDescription
200application/octet-stream, string (binary)Success.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold software:read.
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 GET 'https://depot.example.com/api/v1/reports/software-inventory?agentId=<agentId>&dir=asc&format=<format>&includeRemoved=<includeRemoved>&name=<name>&publisher=<publisher>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTsoftware:managetenant facehosteditmspremote

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

Source: [object Object]

markSoftwareApproval records a decision about an installed title.

The title’s own catalog entry (by package ref, or by name and publisher) is updated when there is one. Otherwise an inventory-only entry is created for exactly this title: an approved deployable entry that merely covers it by a looser name match is not changed, because that would change every title it covers. 201 when an entry was created, 200 when one was updated.

Required, sent as application/json.

FieldTypeDescription
namerequiredstring
packageRefrequiredstring
publisherrequiredstring
statusrequiredstring
StatusBodyDescription
200application/json, SoftwarePackageDetailViewSuccess.
201application/json, SoftwarePackageDetailViewCreated.
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 the required permission.
404application/problem+json, ProblemDetailsPackage not found.
409application/problem+json, ProblemDetailsThat title already has a catalog entry.
500application/problem+json, ProblemDetailsCould not record the decision.
503application/problem+json, ProblemDetailsThe software catalog is not available on this Depot.

200 response body

FieldTypeDescription
approvalStatusrequiredstring, one of approved, not_allowed, unreviewed
autoUpdaterequiredboolean
builtInrequiredboolean
categoryrequiredstring
defaultInstallArgsrequiredstring
defaultUninstallArgsrequiredstring
descriptionrequiredstring
detectionrequiredarray of DetectionRuleView
detection[].expectedstring
detection[].kindrequiredstring
detection[].pathrequiredstring
detection[].valueNamestring
iconTextrequiredstring
installedCountrequiredinteger
licenseTyperequiredstring
managedByProviderrequiredboolean
namerequiredstring
pinnedVersionrequiredstring
publicIdrequiredstring
publisherrequiredstring
requiresApprovalrequiredboolean
selfServiceVisiblerequiredboolean
sourceRefrequiredstring
sourceSha256requiredstring
sourceTyperequiredstring, one of apt, brew, choco, custom_upload, direct_url, dnf, manifest, pkg, winget
successExitCodesrequiredarray of integer
tagsrequiredarray of string
timeoutSecondsrequiredinteger
updatedAtrequiredstring (date-time)
versionCountrequiredinteger
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/software/approvals' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"name": "string",
"packageRef": "string",
"publisher": "string",
"status": "string"
}'

GETsoftware:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

List installed software

NameInTypeRequiredDescription
agentIdquerystringNo
dirquerystring, one of asc, descNoSort direction.
includeRemovedquerystringNo
namequerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
publisherquerystringNo
qquerystringNoFree-text search term.
scopequerystringNo
sortquerystring, one of hostname, lastSeen, name, publisher, versionNoSort key.
versionquerystringNo
StatusBodyDescription
200application/json, PagedResultInstalledSoftwareViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold software:read.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
itemsrequiredarray of InstalledSoftwareView
items[].agentIdrequiredstring
items[].approvalStatusstring, one of approved, not_allowed, unreviewed
items[].firstSeenrequiredstring (date-time)
items[].hostnamerequiredstring
items[].lastSeenrequiredstring (date-time)
items[].latestVersionstring
items[].namerequiredstring
items[].packageIdstring
items[].packageRefstring
items[].publisherrequiredstring
items[].removedAtstring (date-time) or null
items[].scopestring
items[].updateAvailableboolean or null
items[].userSidstring
items[].versionrequiredstring
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/software/installed?agentId=<agentId>&dir=asc&includeRemoved=<includeRemoved>&name=<name>&page=0&pageSize=0' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETsoftware:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

listEndpointsWithSoftware is the licence drill-down: which machines have this exact product, optionally at one version.

The name is required, because without it the answer is every install in the fleet, which is the route above.

NameInTypeRequiredDescription
namequerystringNo
versionquerystringNo
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 software:read.
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 GET 'https://depot.example.com/api/v1/software/installed/endpoints?name=<name>&version=<version>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETsoftware:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

listPendingRemoval answers the endpoint Software tab’s “Pending removal on”.

NameInTypeRequiredDescription
agentIdquerystringNo
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 software:read.
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 GET 'https://depot.example.com/api/v1/software/pending-removal?agentId=<agentId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

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.