Skip to content

Depot vault

Registers the collection and credential surface for one face.

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

POST /api/v1/endpoints/{agentID}/remote/{sessionID}/type-credential

Section titled “POST /api/v1/endpoints/{agentID}/remote/{sessionID}/type-credential”

POSTvault:usetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

Type credential into session

NameInTypeRequiredDescription
agentIDpathstringYes
sessionIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
credentialIdrequiredstring
justificationrequiredstring
sessionIdrequiredstring
ticketIdrequiredstring
StatusBodyDescription
200application/json, TypeCredentialResponseSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThat grant is no longer redeemable. Ask for the credential again.
404application/problem+json, ProblemDetailsNo resource matches that id.
409application/problem+json, ProblemDetailsThat remote session is no longer live, so nothing was typed. Start a new session and try again.
500application/problem+json, ProblemDetailsCould not read the endpoint.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
auditIdrequiredinteger

int64.

sessionIdrequiredstring
typedAtrequiredstring (date-time)
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/endpoints/<agentID>/remote/<sessionID>/type-credential' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"credentialId": "string",
"justification": "string",
"sessionId": "string",
"ticketId": "string"
}'

POST /api/v1/endpoints/{agentID}/shell/grant

Section titled “POST /api/v1/endpoints/{agentID}/shell/grant”

POSTvault:usetenant facehosteditmspremote

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

Source: [object Object]

Grant shell credential

NameInTypeRequiredDescription
agentIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
credentialIdrequiredstring
justificationrequiredstring
sessionIdrequiredstring
ticketIdrequiredstring
StatusBodyDescription
201application/json, VaultUseGrantResponseCreated.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold vault:use.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the endpoint.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

201 response body

FieldTypeDescription
auditIdrequiredinteger

int64.

expiresAtrequiredstring (date-time)
grantIdrequiredstring
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/endpoints/<agentID>/shell/grant' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"credentialId": "string",
"justification": "string",
"sessionId": "string",
"ticketId": "string"
}'

GETNo permission neededtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

extensionCandidates answers GET /api/v1/ext/v1/candidates?url=.

DEFAULT OFF and answering the ordinary 404 when it is off, rather than a 403 naming a setting: the caller is an extension holding a token, and telling it which practices have the feature disabled is telling it which have it enabled.

ponytail: this is the server half only. The extension is not in this slice (DOCS_CONTRACTS.md 12), and when it lands it needs a fill route beside this read, which mints an ordinary VaultUseGrant.

NameInTypeRequiredDescription
urlquerystringNo
StatusBodyDescription
200application/json, objectSuccess.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# This operation is public. It takes no credentials.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ext/v1/candidates?url=<url>' \
-H 'Accept: application/json'

GETvault:readshared facehosteditmspremoteIdempotent

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

Source: [object Object]

List vault collections

NameInTypeRequiredDescription
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
scopequerystringNo
StatusBodyDescription
200application/json, PagedResultVaultCollectionViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold vault:read.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
itemsrequiredarray of VaultCollectionView
items[].colorstring
items[].createdAtrequiredstring (date-time)
items[].credentialCountrequiredinteger
items[].descriptionrequiredstring
items[].grantrequiredstring
items[].namerequiredstring
items[].ownerNamestring
items[].ownerUserIdstring
items[].publicIdrequiredstring
items[].restrictedrequiredboolean
items[].scoperequiredstring
items[].updatedAtrequiredstring (date-time)
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/vault/collections?page=0&pageSize=0&scope=<scope>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTvault:writeshared facehosteditmspremote

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

Source: [object Object]

Create vault collection

Required, sent as application/json.

FieldTypeDescription
colorstring or null
descriptionstring or null
namestring or null
ownerUserIdstring or null
restrictedboolean or null
scopestring or null
StatusBodyDescription
201application/json, VaultCollectionViewCreated.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold vault:write.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

201 response body

FieldTypeDescription
colorstring
createdAtrequiredstring (date-time)
credentialCountrequiredinteger
descriptionrequiredstring
grantrequiredstring
namerequiredstring
ownerNamestring
ownerUserIdstring
publicIdrequiredstring
restrictedrequiredboolean
scoperequiredstring
updatedAtrequiredstring (date-time)
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/vault/collections' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"color": "string",
"description": "string",
"name": "string",
"ownerUserId": "string",
"restricted": false,
"scope": "string"
}'

GET /api/v1/vault/collections/{collectionId}

Section titled “GET /api/v1/vault/collections/{collectionId}”

GETvault:readshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Get vault collection

NameInTypeRequiredDescription
collectionIdpathstringYesA uuid.
StatusBodyDescription
200application/json, VaultCollectionViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
colorstring
createdAtrequiredstring (date-time)
credentialCountrequiredinteger
descriptionrequiredstring
grantrequiredstring
namerequiredstring
ownerNamestring
ownerUserIdstring
publicIdrequiredstring
restrictedrequiredboolean
scoperequiredstring
updatedAtrequiredstring (date-time)
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/vault/collections/<collectionId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCH /api/v1/vault/collections/{collectionId}

Section titled “PATCH /api/v1/vault/collections/{collectionId}”

PATCHvault:writeshared facehosteditmspremote

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

Source: [object Object]

Patch vault collection

NameInTypeRequiredDescription
collectionIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
colorstring or null
descriptionstring or null
namestring or null
ownerUserIdstring or null
restrictedboolean or null
scopestring or null
StatusBodyDescription
200application/json, VaultCollectionViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
colorstring
createdAtrequiredstring (date-time)
credentialCountrequiredinteger
descriptionrequiredstring
grantrequiredstring
namerequiredstring
ownerNamestring
ownerUserIdstring
publicIdrequiredstring
restrictedrequiredboolean
scoperequiredstring
updatedAtrequiredstring (date-time)
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X PATCH 'https://depot.example.com/api/v1/vault/collections/<collectionId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"color": "string",
"description": "string",
"name": "string",
"ownerUserId": "string",
"restricted": false,
"scope": "string"
}'

DELETE /api/v1/vault/collections/{collectionId}

Section titled “DELETE /api/v1/vault/collections/{collectionId}”

DELETEvault:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Delete vault collection

NameInTypeRequiredDescription
collectionIdpathstringYesA 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 vault:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
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/vault/collections/<collectionId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/vault/collections/{collectionId}/grants

Section titled “GET /api/v1/vault/collections/{collectionId}/grants”

GETvault:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

List vault grants

NameInTypeRequiredDescription
collectionIdpathstringYesA 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 vault:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
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/vault/collections/<collectionId>/grants' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUT /api/v1/vault/collections/{collectionId}/grants

Section titled “PUT /api/v1/vault/collections/{collectionId}/grants”

PUTvault:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

List vault grants

NameInTypeRequiredDescription
collectionIdpathstringYesA 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 vault:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
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/vault/collections/<collectionId>/grants' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETvault:readshared facehosteditmspremoteIdempotent

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

Source: [object Object]

List vault credentials

NameInTypeRequiredDescription
categoryquerystringNo
checkedOutquerystringNo
collectionIdquerystringNo
dirquerystringNo
healthquerystringNo
includeSuggestedquerystringNo
kindquerystringNo
labelquerystringNo
managedquerystringNo
ownerUserIdquerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
qquerystringNo
relatedIdquerystringNo
relatedKindquerystringNo
scopequerystringNo
sortquerystringNo
statequerystringNo
StatusBodyDescription
200application/json, PagedResultCredentialSummarySuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold vault:read.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
itemsrequiredarray of CredentialSummary
items[].breachCheckedAtstring (date-time) or null
items[].breachCountrequiredinteger
items[].categoryrequiredstring
items[].checkoutCheckoutView
items[].checkout.checkedOutAtrequiredstring (date-time)
items[].checkout.dueAtrequiredstring (date-time)
items[].checkout.isMinerequiredboolean
items[].checkout.userIdrequiredstring
items[].checkout.userNamerequiredstring
items[].checkoutEnabledrequiredboolean
items[].checkoutMinutesrequiredinteger
items[].checkoutRotateOnCheckInrequiredboolean
items[].collectionIdrequiredstring
items[].collectionNamerequiredstring
items[].collectionScoperequiredstring
items[].createdAtrequiredstring (date-time)
items[].grantrequiredstring
items[].hasNotesrequiredboolean
items[].hasSecretrequiredboolean
items[].hasTotprequiredboolean
items[].healthrequiredarray of string
items[].kindrequiredstring
items[].labelsrequiredarray of string
items[].lastRotatedAtstring (date-time) or null
items[].lastUsedAtstring (date-time) or null
items[].linkCountrequiredinteger
items[].managedAccountSidstring
items[].managedAgentIdstring
items[].managedByrequiredstring
items[].managedStatestring
items[].namerequiredstring
items[].ownerNamestring
items[].ownerUserIdstring
items[].publicIdrequiredstring
items[].requireJustificationrequiredboolean
items[].requireStepUprequiredboolean
items[].restrictedrequiredboolean
items[].reviewByOnstring (date-time) or null
items[].rotateByOnstring (date-time) or null
items[].secretRevisionrequiredinteger

int64.

items[].snmpOptions
items[].snmp.authProtocolstring
items[].snmp.contextNamestring
items[].snmp.modestring
items[].snmp.privProtocolstring
items[].snmp.samePasswordboolean
items[].snmp.securityLevelstring
items[].snmp.usernamestring
items[].snmp.versionrequiredstring
items[].sourceRefstring
items[].sourceSystemstring
items[].staterequiredstring
items[].strengthScorerequiredinteger
items[].updatedAtrequiredstring (date-time)
items[].urlsrequiredarray of CredentialURLView
items[].urls[].matchrequiredstring
items[].urls[].urlrequiredstring
items[].usernamerequiredstring
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/vault/credentials?category=<category>&checkedOut=<checkedOut>&collectionId=<collectionId>&dir=<dir>&health=<health>&includeSuggested=<includeSuggested>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTvault:writeshared facehosteditmspremote

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

Source: [object Object]

Create vault credential

Required, sent as application/json.

FieldTypeDescription
categorystring or null
checkoutEnabledboolean or null
checkoutMinutesinteger or null
checkoutRotateOnCheckInboolean or null
collectionIdstring or null
kindstring or null
labelsarray of string or null
namestring or null
notesstring or null
ownerUserIdstring or null
requireJustificationboolean or null
requireStepUpboolean or null
reviewByOnstring (date-time) or null
rotateByOnstring (date-time) or null
secretstring or null
snmpWrite
snmp.authPasswordstring or null
snmp.authProtocolstring
snmp.communitystring or null
snmp.contextNamestring
snmp.modestring
snmp.privPasswordstring or null
snmp.privProtocolstring
snmp.samePasswordboolean
snmp.securityLevelstring
snmp.usernamestring
snmp.versionrequiredstring
statestring or null
totpSeedstring or null
urlsarray of CredentialURLView or null
urls[].matchrequiredstring
urls[].urlrequiredstring
usernamestring or null
StatusBodyDescription
201application/json, CredentialSummaryCreated.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

201 response body

FieldTypeDescription
breachCheckedAtstring (date-time) or null
breachCountrequiredinteger
categoryrequiredstring
checkoutCheckoutView
checkout.checkedOutAtrequiredstring (date-time)
checkout.dueAtrequiredstring (date-time)
checkout.isMinerequiredboolean
checkout.userIdrequiredstring
checkout.userNamerequiredstring
checkoutEnabledrequiredboolean
checkoutMinutesrequiredinteger
checkoutRotateOnCheckInrequiredboolean
collectionIdrequiredstring
collectionNamerequiredstring
collectionScoperequiredstring
createdAtrequiredstring (date-time)
grantrequiredstring
hasNotesrequiredboolean
hasSecretrequiredboolean
hasTotprequiredboolean
healthrequiredarray of string
kindrequiredstring
labelsrequiredarray of string
lastRotatedAtstring (date-time) or null
lastUsedAtstring (date-time) or null
linkCountrequiredinteger
managedAccountSidstring
managedAgentIdstring
managedByrequiredstring
managedStatestring
namerequiredstring
ownerNamestring
ownerUserIdstring
publicIdrequiredstring
requireJustificationrequiredboolean
requireStepUprequiredboolean
restrictedrequiredboolean
reviewByOnstring (date-time) or null
rotateByOnstring (date-time) or null
secretRevisionrequiredinteger

int64.

snmpOptions
snmp.authProtocolstring
snmp.contextNamestring
snmp.modestring
snmp.privProtocolstring
snmp.samePasswordboolean
snmp.securityLevelstring
snmp.usernamestring
snmp.versionrequiredstring
sourceRefstring
sourceSystemstring
staterequiredstring
strengthScorerequiredinteger
updatedAtrequiredstring (date-time)
urlsrequiredarray of CredentialURLView
urls[].matchrequiredstring
urls[].urlrequiredstring
usernamerequiredstring
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/vault/credentials' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"category": "string",
"checkoutEnabled": false,
"checkoutMinutes": 0,
"checkoutRotateOnCheckIn": false,
"collectionId": "string",
"kind": "string",
"labels": [
"string"
],
"name": "string",
"notes": "string",
"ownerUserId": "string",
"requireJustification": false,
"requireStepUp": false,
"reviewByOn": "2026-01-01T00:00:00Z",
"rotateByOn": "2026-01-01T00:00:00Z",
"secret": "string",
"snmp": {
"authPassword": "string",
"authProtocol": "string",
"community": "string",
"contextName": "string",
"mode": "string",
"privPassword": "string",
"privProtocol": "string",
"samePassword": false,
"securityLevel": "string",
"username": "string",
"version": "string"
},
"state": "string",
"totpSeed": "string",
"urls": [
{
"match": "string",
"url": "string"
}
],
"username": "string"
}'

GETvault:readshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Get vault credential

NameInTypeRequiredDescription
credIdpathstringYesA uuid.
StatusBodyDescription
200application/json, CredentialSummarySuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
breachCheckedAtstring (date-time) or null
breachCountrequiredinteger
categoryrequiredstring
checkoutCheckoutView
checkout.checkedOutAtrequiredstring (date-time)
checkout.dueAtrequiredstring (date-time)
checkout.isMinerequiredboolean
checkout.userIdrequiredstring
checkout.userNamerequiredstring
checkoutEnabledrequiredboolean
checkoutMinutesrequiredinteger
checkoutRotateOnCheckInrequiredboolean
collectionIdrequiredstring
collectionNamerequiredstring
collectionScoperequiredstring
createdAtrequiredstring (date-time)
grantrequiredstring
hasNotesrequiredboolean
hasSecretrequiredboolean
hasTotprequiredboolean
healthrequiredarray of string
kindrequiredstring
labelsrequiredarray of string
lastRotatedAtstring (date-time) or null
lastUsedAtstring (date-time) or null
linkCountrequiredinteger
managedAccountSidstring
managedAgentIdstring
managedByrequiredstring
managedStatestring
namerequiredstring
ownerNamestring
ownerUserIdstring
publicIdrequiredstring
requireJustificationrequiredboolean
requireStepUprequiredboolean
restrictedrequiredboolean
reviewByOnstring (date-time) or null
rotateByOnstring (date-time) or null
secretRevisionrequiredinteger

int64.

snmpOptions
snmp.authProtocolstring
snmp.contextNamestring
snmp.modestring
snmp.privProtocolstring
snmp.samePasswordboolean
snmp.securityLevelstring
snmp.usernamestring
snmp.versionrequiredstring
sourceRefstring
sourceSystemstring
staterequiredstring
strengthScorerequiredinteger
updatedAtrequiredstring (date-time)
urlsrequiredarray of CredentialURLView
urls[].matchrequiredstring
urls[].urlrequiredstring
usernamerequiredstring
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/vault/credentials/<credId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCHvault:writeshared facehosteditmspremote

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

Source: [object Object]

Patch vault credential

NameInTypeRequiredDescription
credIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
categorystring or null
checkoutEnabledboolean or null
checkoutMinutesinteger or null
checkoutRotateOnCheckInboolean or null
collectionIdstring or null
kindstring or null
labelsarray of string or null
namestring or null
notesstring or null
ownerUserIdstring or null
requireJustificationboolean or null
requireStepUpboolean or null
reviewByOnstring (date-time) or null
rotateByOnstring (date-time) or null
secretstring or null
snmpWrite
snmp.authPasswordstring or null
snmp.authProtocolstring
snmp.communitystring or null
snmp.contextNamestring
snmp.modestring
snmp.privPasswordstring or null
snmp.privProtocolstring
snmp.samePasswordboolean
snmp.securityLevelstring
snmp.usernamestring
snmp.versionrequiredstring
statestring or null
totpSeedstring or null
urlsarray of CredentialURLView or null
urls[].matchrequiredstring
urls[].urlrequiredstring
usernamestring or null
StatusBodyDescription
200application/json, CredentialSummarySuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
breachCheckedAtstring (date-time) or null
breachCountrequiredinteger
categoryrequiredstring
checkoutCheckoutView
checkout.checkedOutAtrequiredstring (date-time)
checkout.dueAtrequiredstring (date-time)
checkout.isMinerequiredboolean
checkout.userIdrequiredstring
checkout.userNamerequiredstring
checkoutEnabledrequiredboolean
checkoutMinutesrequiredinteger
checkoutRotateOnCheckInrequiredboolean
collectionIdrequiredstring
collectionNamerequiredstring
collectionScoperequiredstring
createdAtrequiredstring (date-time)
grantrequiredstring
hasNotesrequiredboolean
hasSecretrequiredboolean
hasTotprequiredboolean
healthrequiredarray of string
kindrequiredstring
labelsrequiredarray of string
lastRotatedAtstring (date-time) or null
lastUsedAtstring (date-time) or null
linkCountrequiredinteger
managedAccountSidstring
managedAgentIdstring
managedByrequiredstring
managedStatestring
namerequiredstring
ownerNamestring
ownerUserIdstring
publicIdrequiredstring
requireJustificationrequiredboolean
requireStepUprequiredboolean
restrictedrequiredboolean
reviewByOnstring (date-time) or null
rotateByOnstring (date-time) or null
secretRevisionrequiredinteger

int64.

snmpOptions
snmp.authProtocolstring
snmp.contextNamestring
snmp.modestring
snmp.privProtocolstring
snmp.samePasswordboolean
snmp.securityLevelstring
snmp.usernamestring
snmp.versionrequiredstring
sourceRefstring
sourceSystemstring
staterequiredstring
strengthScorerequiredinteger
updatedAtrequiredstring (date-time)
urlsrequiredarray of CredentialURLView
urls[].matchrequiredstring
urls[].urlrequiredstring
usernamerequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X PATCH 'https://depot.example.com/api/v1/vault/credentials/<credId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"category": "string",
"checkoutEnabled": false,
"checkoutMinutes": 0,
"checkoutRotateOnCheckIn": false,
"collectionId": "string",
"kind": "string",
"labels": [
"string"
],
"name": "string",
"notes": "string",
"ownerUserId": "string",
"requireJustification": false,
"requireStepUp": false,
"reviewByOn": "2026-01-01T00:00:00Z",
"rotateByOn": "2026-01-01T00:00:00Z",
"secret": "string",
"snmp": {
"authPassword": "string",
"authProtocol": "string",
"community": "string",
"contextName": "string",
"mode": "string",
"privPassword": "string",
"privProtocol": "string",
"samePassword": false,
"securityLevel": "string",
"username": "string",
"version": "string"
},
"state": "string",
"totpSeed": "string",
"urls": [
{
"match": "string",
"url": "string"
}
],
"username": "string"
}'

DELETEvault:writeshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Delete vault credential

NameInTypeRequiredDescription
credIdpathstringYesA 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 the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
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/vault/credentials/<credId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/vault/credentials/{credId}/checkin

Section titled “POST /api/v1/vault/credentials/{credId}/checkin”

POSTvault:writeshared facehosteditmspremote

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

Source: [object Object]

Check in vault credential

NameInTypeRequiredDescription
credIdpathstringYesA uuid.
StatusBodyDescription
200application/json, CheckoutViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
checkedOutAtrequiredstring (date-time)
dueAtrequiredstring (date-time)
isMinerequiredboolean
userIdrequiredstring
userNamerequiredstring
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/vault/credentials/<credId>/checkin' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/vault/credentials/{credId}/checkout

Section titled “POST /api/v1/vault/credentials/{credId}/checkout”

POSTvault:writeshared facehosteditmspremote

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

Source: [object Object]

Check out vault credential

NameInTypeRequiredDescription
credIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
justificationrequiredstring
minutesrequiredinteger
ticketIdrequiredstring
StatusBodyDescription
200application/json, CheckoutViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
checkedOutAtrequiredstring (date-time)
dueAtrequiredstring (date-time)
isMinerequiredboolean
userIdrequiredstring
userNamerequiredstring
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/vault/credentials/<credId>/checkout' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"justification": "string",
"minutes": 0,
"ticketId": "string"
}'

POST /api/v1/vault/credentials/{credId}/force-checkin

Section titled “POST /api/v1/vault/credentials/{credId}/force-checkin”

POSTvault:manageshared facehosteditmspremote

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

Source: [object Object]

Force check in vault credential

NameInTypeRequiredDescription
credIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
justificationrequiredstring
minutesrequiredinteger
ticketIdrequiredstring
StatusBodyDescription
200application/json, CheckoutViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold vault:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
checkedOutAtrequiredstring (date-time)
dueAtrequiredstring (date-time)
isMinerequiredboolean
userIdrequiredstring
userNamerequiredstring
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/vault/credentials/<credId>/force-checkin' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"justification": "string",
"minutes": 0,
"ticketId": "string"
}'

GET /api/v1/vault/credentials/{credId}/history

Section titled “GET /api/v1/vault/credentials/{credId}/history”

GETvault:revealshared facehosteditmspremoteIdempotent

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

Source: [object Object]

readVaultHistory is the one disclosure route that is a GET, and the one that additionally requires grant EDIT.

Edit and not view, because the history is every password this credential has ever had: a reader who may see the current one has been trusted with one secret, and the history is every secret it ever was, including ones still live on a restored image.

NameInTypeRequiredDescription
credIdpathstringYesA uuid.
justificationquerystringNo
ticketIdquerystringNo
StatusBodyDescription
200application/json, CredentialHistoryResponseSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
auditIdrequiredinteger

int64.

itemsrequiredarray of CredentialHistoryItem
items[].changedAtrequiredstring (date-time)
items[].changedByNamestring
items[].changedByUserIdstring
items[].reasonrequiredstring
items[].secretrequiredstring
items[].versionNorequiredinteger
publicIdrequiredstring
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/vault/credentials/<credId>/history?justification=<justification>&ticketId=<ticketId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/vault/credentials/{credId}/reveal

Section titled “POST /api/v1/vault/credentials/{credId}/reveal”

POSTvault:revealshared facehosteditmspremote

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

Source: [object Object]

Reveal vault credential

NameInTypeRequiredDescription
credIdpathstringYesA uuid.
justificationquerystringNo
ticketIdquerystringNo

Required, sent as application/json.

FieldTypeDescription
justificationrequiredstring
ticketIdrequiredstring
StatusBodyDescription
200application/json, CredentialRevealResponseSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
auditIdrequiredinteger

int64.

notesstring
publicIdrequiredstring
secretrequiredstring
totpCodestring
totpRemainingSecondsinteger
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/vault/credentials/<credId>/reveal?justification=<justification>&ticketId=<ticketId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"justification": "string",
"ticketId": "string"
}'

POST /api/v1/vault/credentials/{credId}/rotate

Section titled “POST /api/v1/vault/credentials/{credId}/rotate”

POSTvault:rotateshared facehosteditmspremote

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

Source: [object Object]

Rotate vault credential

NameInTypeRequiredDescription
credIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
expectedRevisioninteger or null

int64.

justificationrequiredstring
reasonrequiredstring
rotateByOnstring (date-time) or null
secretrequiredstring
snmpWrite
snmp.authPasswordstring or null
snmp.authProtocolstring
snmp.communitystring or null
snmp.contextNamestring
snmp.modestring
snmp.privPasswordstring or null
snmp.privProtocolstring
snmp.samePasswordboolean
snmp.securityLevelstring
snmp.usernamestring
snmp.versionrequiredstring
ticketIdrequiredstring
StatusBodyDescription
200application/json, CredentialSummarySuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
breachCheckedAtstring (date-time) or null
breachCountrequiredinteger
categoryrequiredstring
checkoutCheckoutView
checkout.checkedOutAtrequiredstring (date-time)
checkout.dueAtrequiredstring (date-time)
checkout.isMinerequiredboolean
checkout.userIdrequiredstring
checkout.userNamerequiredstring
checkoutEnabledrequiredboolean
checkoutMinutesrequiredinteger
checkoutRotateOnCheckInrequiredboolean
collectionIdrequiredstring
collectionNamerequiredstring
collectionScoperequiredstring
createdAtrequiredstring (date-time)
grantrequiredstring
hasNotesrequiredboolean
hasSecretrequiredboolean
hasTotprequiredboolean
healthrequiredarray of string
kindrequiredstring
labelsrequiredarray of string
lastRotatedAtstring (date-time) or null
lastUsedAtstring (date-time) or null
linkCountrequiredinteger
managedAccountSidstring
managedAgentIdstring
managedByrequiredstring
managedStatestring
namerequiredstring
ownerNamestring
ownerUserIdstring
publicIdrequiredstring
requireJustificationrequiredboolean
requireStepUprequiredboolean
restrictedrequiredboolean
reviewByOnstring (date-time) or null
rotateByOnstring (date-time) or null
secretRevisionrequiredinteger

int64.

snmpOptions
snmp.authProtocolstring
snmp.contextNamestring
snmp.modestring
snmp.privProtocolstring
snmp.samePasswordboolean
snmp.securityLevelstring
snmp.usernamestring
snmp.versionrequiredstring
sourceRefstring
sourceSystemstring
staterequiredstring
strengthScorerequiredinteger
updatedAtrequiredstring (date-time)
urlsrequiredarray of CredentialURLView
urls[].matchrequiredstring
urls[].urlrequiredstring
usernamerequiredstring
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/vault/credentials/<credId>/rotate' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"expectedRevision": 0,
"justification": "string",
"reason": "string",
"rotateByOn": "2026-01-01T00:00:00Z",
"secret": "string",
"snmp": {
"authPassword": "string",
"authProtocol": "string",
"community": "string",
"contextName": "string",
"mode": "string",
"privPassword": "string",
"privProtocol": "string",
"samePassword": false,
"securityLevel": "string",
"username": "string",
"version": "string"
},
"ticketId": "string"
}'

POST /api/v1/vault/credentials/{credId}/rotate-now

Section titled “POST /api/v1/vault/credentials/{credId}/rotate-now”

POSTvault:rotateshared facehosteditmspremote

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

Source: [object Object]

Rotate vault credential now

NameInTypeRequiredDescription
credIdpathstringYesA uuid.
StatusBodyDescription
202application/json, RotateNowResponseAccepted.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
502application/problem+json, ProblemDetailsCould not ask the endpoint to rotate.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

202 response body

FieldTypeDescription
commandIdrequiredstring
deliveredrequiredboolean
staterequiredstring
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/vault/credentials/<credId>/rotate-now' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/vault/credentials/{credId}/rotations

Section titled “GET /api/v1/vault/credentials/{credId}/rotations”

GETvault:readshared facehosteditmspremoteIdempotent

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

Source: [object Object]

List vault rotations

NameInTypeRequiredDescription
credIdpathstringYesA 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 the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
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/vault/credentials/<credId>/rotations' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/vault/credentials/{credId}/totp

Section titled “POST /api/v1/vault/credentials/{credId}/totp”

POSTvault:revealshared facehosteditmspremote

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

Source: [object Object]

Read vault totp

NameInTypeRequiredDescription
credIdpathstringYesA uuid.
justificationquerystringNo
ticketIdquerystringNo

Required, sent as application/json.

FieldTypeDescription
justificationrequiredstring
ticketIdrequiredstring
StatusBodyDescription
200application/json, CredentialTotpResponseSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold the required permission.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsCould not read the credential.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
auditIdrequiredinteger

int64.

publicIdrequiredstring
totpCoderequiredstring
totpRemainingSecondsrequiredinteger
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/vault/credentials/<credId>/totp?justification=<justification>&ticketId=<ticketId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"justification": "string",
"ticketId": "string"
}'

GETtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

List extension tokens

StatusBodyDescription
200application/json, objectSuccess.
401application/problem+json, ProblemDetailsAuthentication is required.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
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/vault/extension-tokens' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTtenant facehosteditmspremote

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

Source: [object Object]

Mint extension token

Required, sent as application/json.

FieldTypeDescription
labelrequiredstring
scoperequiredstring, one of read, use
StatusBodyDescription
201application/json, ExtensionTokenMintedCreated.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsAuthentication is required.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

201 response body

FieldTypeDescription
createdAtrequiredstring (date-time)
expiresAtrequiredstring (date-time)
labelrequiredstring
lastUsedAtstring (date-time) or null
publicIdrequiredstring
revokedAtstring (date-time) or null
scoperequiredstring
tokenrequiredstring
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/vault/extension-tokens' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"label": "string",
"scope": "read"
}'

DELETE /api/v1/vault/extension-tokens/{tokenId}

Section titled “DELETE /api/v1/vault/extension-tokens/{tokenId}”

DELETEtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

Revoke extension token

NameInTypeRequiredDescription
tokenIdpathstringYesA uuid.
StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsAuthentication is required.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
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/vault/extension-tokens/<tokenId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/vault/personal/{userId}/reclaim

Section titled “POST /api/v1/vault/personal/{userId}/reclaim”

POSTvault:manageshared facehosteditmspremote

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

Source: [object Object]

Reclaim personal vault

NameInTypeRequiredDescription
userIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
destinationCollectionIdrequiredstring
reasonrequiredstring
StatusBodyDescription
200application/json, ReclaimResponseSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold vault:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
auditIdrequiredinteger

int64.

destinationCollectionIdrequiredstring
destinationCollectionNamerequiredstring
movedrequiredarray of ReclaimedCredental
moved[].namerequiredstring
moved[].publicIdrequiredstring
moved[].usernamerequiredstring
movedCountrequiredinteger
ownerNamerequiredstring
ownerUserIdrequiredstring
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/vault/personal/<userId>/reclaim' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"destinationCollectionId": "string",
"reason": "string"
}'

GETvault:useshared facehosteditmspremoteIdempotent

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

Source: [object Object]

listUsableCredentials answers GET /api/v1/vault/usable?agentId=.

It exists BECAUSE vault:use does not imply vault:read. Without it the session picker would be built from a list read the technician lacks, and the split would be true in the permission table and false in the product. A holder of vault:use alone gets 200 here and 403 on /vault/credentials.

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 vault:use.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
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/vault/usable?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.