Skip to content

Depot workflows

Registers the workflow routes.

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

GETautomation:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

listWorkflows lists practice workflows and every client’s legacy rules.

NameInTypeRequiredDescription
entityquerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
qquerystringNoFree-text search term.
sourcequerystringNo
triggerKindquerystringNo
StatusBodyDescription
200application/json, WorkflowListViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold automation:manage.
404application/problem+json, ProblemDetailsNo resource matches.
422application/problem+json, ProblemDetailsOpportunity workflows run on the sales pipeline, which only an MSP practice has.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

200 response body

FieldTypeDescription
itemsrequiredarray of WorkflowView
items[].actions24hrequiredinteger
items[].clientWorkflowRef

workflowRef is any named thing the console shows: a client, a user, a role.

items[].client.idrequiredstring
items[].client.namerequiredstring
items[].createdAtrequiredstring (date-time)
items[].definitionrequiredany

Arbitrary JSON.

items[].descriptionrequiredstring
items[].enabledrequiredboolean
items[].idrequiredstring
items[].issuesrequiredarray of WorkflowIssue
items[].issues[].clientsrequiredarray of string
items[].issues[].coderequiredstring
items[].issues[].messagerequiredstring
items[].issues[].pathstring
items[].lastRunAtstring (date-time) or null
items[].namerequiredstring
items[].nextRunAtstring (date-time) or null
items[].pausedAtstring (date-time) or null
items[].pausedReasonstring or null
items[].presetKeystring or null
items[].rowVersionrequiredinteger

int64.

items[].runOrderrequiredinteger
items[].scoperequiredWorkflowScopeView
items[].scope.clientsrequiredarray of WorkflowRef
items[].scope.clients[].idrequiredstring
items[].scope.clients[].namerequiredstring
items[].scope.moderequiredstring, one of all, except, only
items[].sourcerequiredstring
items[].statusrequiredstring, one of needs_attention, off, on, paused
items[].triggerKindrequiredstring
items[].updatedAtrequiredstring (date-time)
items[].updatedBystring or null
pagerequiredinteger
pageSizerequiredinteger
pausedrequiredboolean
totalrequiredinteger
unavailableClientsrequiredarray of WorkflowRef
unavailableClients[].idrequiredstring
unavailableClients[].namerequiredstring
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/workflows?entity=<entity>&page=0&pageSize=0&q=<q>&source=<source>&triggerKind=<triggerKind>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTautomation:manageshared facehosteditmspremote

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

Source: [object Object]

Create workflow

NameInTypeRequiredDescription
entityquerystringNo

Required, sent as application/json.

FieldTypeDescription
definitionrequiredany

Arbitrary JSON.

descriptionstring or null
enabledboolean or null
namestring or null
runOrderinteger or null
scopeWorkflowScopeInput
scope.clientIdsrequiredarray of string
scope.moderequiredstring
StatusBodyDescription
201application/json, WorkflowSaveViewCreated.
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 automation:manage.
404application/problem+json, ProblemDetailsNo resource matches.
422application/problem+json, ProblemDetailsOpportunity workflows run on the sales pipeline, which only an MSP practice has.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

201 response body

FieldTypeDescription
actions24hrequiredinteger
clientWorkflowRef

workflowRef is any named thing the console shows: a client, a user, a role.

client.idrequiredstring
client.namerequiredstring
conflictsrequiredarray of WorkflowConflict
conflicts[].fieldrequiredstring
conflicts[].messagerequiredstring
conflicts[].workflowIdrequiredstring
conflicts[].workflowNamerequiredstring
createdAtrequiredstring (date-time)
definitionrequiredany

Arbitrary JSON.

descriptionrequiredstring
enabledrequiredboolean
idrequiredstring
issuesrequiredarray of WorkflowIssue
issues[].clientsrequiredarray of string
issues[].coderequiredstring
issues[].messagerequiredstring
issues[].pathstring
lastRunAtstring (date-time) or null
namerequiredstring
nextRunAtstring (date-time) or null
pausedAtstring (date-time) or null
pausedReasonstring or null
presetKeystring or null
rowVersionrequiredinteger

int64.

runOrderrequiredinteger
scoperequiredWorkflowScopeView
scope.clientsrequiredarray of WorkflowRef
scope.clients[].idrequiredstring
scope.clients[].namerequiredstring
scope.moderequiredstring, one of all, except, only
sourcerequiredstring
statusrequiredstring, one of needs_attention, off, on, paused
triggerKindrequiredstring
updatedAtrequiredstring (date-time)
updatedBystring or null
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/workflows?entity=<entity>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"definition": "string",
"description": "string",
"enabled": false,
"name": "string",
"runOrder": 0,
"scope": {
"clientIds": [
"string"
],
"mode": "string"
}
}'

GETautomation:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Get workflow

NameInTypeRequiredDescription
workflowIDpathstringYesA uuid.
StatusBodyDescription
200application/json, WorkflowViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold automation:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

200 response body

FieldTypeDescription
actions24hrequiredinteger
clientWorkflowRef

workflowRef is any named thing the console shows: a client, a user, a role.

client.idrequiredstring
client.namerequiredstring
createdAtrequiredstring (date-time)
definitionrequiredany

Arbitrary JSON.

descriptionrequiredstring
enabledrequiredboolean
idrequiredstring
issuesrequiredarray of WorkflowIssue
issues[].clientsrequiredarray of string
issues[].coderequiredstring
issues[].messagerequiredstring
issues[].pathstring
lastRunAtstring (date-time) or null
namerequiredstring
nextRunAtstring (date-time) or null
pausedAtstring (date-time) or null
pausedReasonstring or null
presetKeystring or null
rowVersionrequiredinteger

int64.

runOrderrequiredinteger
scoperequiredWorkflowScopeView
scope.clientsrequiredarray of WorkflowRef
scope.clients[].idrequiredstring
scope.clients[].namerequiredstring
scope.moderequiredstring, one of all, except, only
sourcerequiredstring
statusrequiredstring, one of needs_attention, off, on, paused
triggerKindrequiredstring
updatedAtrequiredstring (date-time)
updatedBystring 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/workflows/<workflowID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCHautomation:manageshared facehosteditmspremote

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

Source: [object Object]

Update workflow

NameInTypeRequiredDescription
workflowIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
definitionrequiredany

Arbitrary JSON.

descriptionstring or null
enabledboolean or null
namestring or null
runOrderinteger or null
scopeWorkflowScopeInput
scope.clientIdsrequiredarray of string
scope.moderequiredstring
StatusBodyDescription
200application/json, WorkflowSaveViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold automation:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

200 response body

FieldTypeDescription
actions24hrequiredinteger
clientWorkflowRef

workflowRef is any named thing the console shows: a client, a user, a role.

client.idrequiredstring
client.namerequiredstring
conflictsrequiredarray of WorkflowConflict
conflicts[].fieldrequiredstring
conflicts[].messagerequiredstring
conflicts[].workflowIdrequiredstring
conflicts[].workflowNamerequiredstring
createdAtrequiredstring (date-time)
definitionrequiredany

Arbitrary JSON.

descriptionrequiredstring
enabledrequiredboolean
idrequiredstring
issuesrequiredarray of WorkflowIssue
issues[].clientsrequiredarray of string
issues[].coderequiredstring
issues[].messagerequiredstring
issues[].pathstring
lastRunAtstring (date-time) or null
namerequiredstring
nextRunAtstring (date-time) or null
pausedAtstring (date-time) or null
pausedReasonstring or null
presetKeystring or null
rowVersionrequiredinteger

int64.

runOrderrequiredinteger
scoperequiredWorkflowScopeView
scope.clientsrequiredarray of WorkflowRef
scope.clients[].idrequiredstring
scope.clients[].namerequiredstring
scope.moderequiredstring, one of all, except, only
sourcerequiredstring
statusrequiredstring, one of needs_attention, off, on, paused
triggerKindrequiredstring
updatedAtrequiredstring (date-time)
updatedBystring or null
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/workflows/<workflowID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"definition": "string",
"description": "string",
"enabled": false,
"name": "string",
"runOrder": 0,
"scope": {
"clientIds": [
"string"
],
"mode": "string"
}
}'

DELETEautomation:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Delete workflow

NameInTypeRequiredDescription
workflowIDpathstringYesA 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 automation:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice 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/workflows/<workflowID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/workflows/{workflowID}/duplicate

Section titled “POST /api/v1/workflows/{workflowID}/duplicate”

POSTautomation:manageshared facehosteditmspremote

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

Source: [object Object]

Duplicate workflow

NameInTypeRequiredDescription
workflowIDpathstringYesA uuid.
StatusBodyDescription
201application/json, WorkflowSaveViewCreated.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold automation:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

201 response body

FieldTypeDescription
actions24hrequiredinteger
clientWorkflowRef

workflowRef is any named thing the console shows: a client, a user, a role.

client.idrequiredstring
client.namerequiredstring
conflictsrequiredarray of WorkflowConflict
conflicts[].fieldrequiredstring
conflicts[].messagerequiredstring
conflicts[].workflowIdrequiredstring
conflicts[].workflowNamerequiredstring
createdAtrequiredstring (date-time)
definitionrequiredany

Arbitrary JSON.

descriptionrequiredstring
enabledrequiredboolean
idrequiredstring
issuesrequiredarray of WorkflowIssue
issues[].clientsrequiredarray of string
issues[].coderequiredstring
issues[].messagerequiredstring
issues[].pathstring
lastRunAtstring (date-time) or null
namerequiredstring
nextRunAtstring (date-time) or null
pausedAtstring (date-time) or null
pausedReasonstring or null
presetKeystring or null
rowVersionrequiredinteger

int64.

runOrderrequiredinteger
scoperequiredWorkflowScopeView
scope.clientsrequiredarray of WorkflowRef
scope.clients[].idrequiredstring
scope.clients[].namerequiredstring
scope.moderequiredstring, one of all, except, only
sourcerequiredstring
statusrequiredstring, one of needs_attention, off, on, paused
triggerKindrequiredstring
updatedAtrequiredstring (date-time)
updatedBystring or null
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/workflows/<workflowID>/duplicate' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/workflows/{workflowID}/resume

Section titled “POST /api/v1/workflows/{workflowID}/resume”

POSTautomation:manageshared facehosteditmspremote

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

Source: [object Object]

Resume workflow

NameInTypeRequiredDescription
workflowIDpathstringYesA uuid.
StatusBodyDescription
200application/json, WorkflowViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold automation:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

200 response body

FieldTypeDescription
actions24hrequiredinteger
clientWorkflowRef

workflowRef is any named thing the console shows: a client, a user, a role.

client.idrequiredstring
client.namerequiredstring
createdAtrequiredstring (date-time)
definitionrequiredany

Arbitrary JSON.

descriptionrequiredstring
enabledrequiredboolean
idrequiredstring
issuesrequiredarray of WorkflowIssue
issues[].clientsrequiredarray of string
issues[].coderequiredstring
issues[].messagerequiredstring
issues[].pathstring
lastRunAtstring (date-time) or null
namerequiredstring
nextRunAtstring (date-time) or null
pausedAtstring (date-time) or null
pausedReasonstring or null
presetKeystring or null
rowVersionrequiredinteger

int64.

runOrderrequiredinteger
scoperequiredWorkflowScopeView
scope.clientsrequiredarray of WorkflowRef
scope.clients[].idrequiredstring
scope.clients[].namerequiredstring
scope.moderequiredstring, one of all, except, only
sourcerequiredstring
statusrequiredstring, one of needs_attention, off, on, paused
triggerKindrequiredstring
updatedAtrequiredstring (date-time)
updatedBystring or null
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/workflows/<workflowID>/resume' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETautomation:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

List workflow runs

NameInTypeRequiredDescription
workflowIDpathstringYesA uuid.
clientquerystringNo
outcomequerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
StatusBodyDescription
200application/json, PagedResultOppWorkflowRunViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold automation:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
422application/problem+json, ProblemDetailsOpportunity workflows run on the sales pipeline, which only an MSP practice has.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

200 response body

FieldTypeDescription
itemsrequiredarray of OppWorkflowRunView
items[].errorrequiredstring
items[].occurredAtrequiredstring (date-time)
items[].opportunityIdstring or null
items[].opportunityNamestring or null
items[].outcomerequiredstring
items[].pathrequiredany

Arbitrary JSON.

items[].publicIdrequiredstring
items[].reasonstring or null
items[].triggerstring or null
items[].workflowIdrequiredstring
items[].workflowNamerequiredstring
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/workflows/<workflowID>/runs?client=<client>&outcome=<outcome>&page=0&pageSize=0' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETautomation:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

List workflow library

NameInTypeRequiredDescription
entityquerystringNo
StatusBodyDescription
200application/json, WorkflowLibraryViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold automation:manage.
404application/problem+json, ProblemDetailsNo resource matches.
422application/problem+json, ProblemDetailsOpportunity workflows run on the sales pipeline, which only an MSP practice has.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

200 response body

FieldTypeDescription
itemsrequiredarray of WorkflowPresetView
items[].definitionrequiredany

Arbitrary JSON.

items[].descriptionrequiredstring
items[].installedrequiredboolean
items[].keyrequiredstring
items[].namerequiredstring
items[].triggerKindrequiredstring
items[].usesAirequiredboolean
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/workflows/library?entity=<entity>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/workflows/library/{key}/install

Section titled “POST /api/v1/workflows/library/{key}/install”

POSTautomation:manageshared facehosteditmspremote

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

Source: [object Object]

Install workflow preset

NameInTypeRequiredDescription
keypathstringYes

Required, sent as application/json.

FieldTypeDescription
namestring or null
scopeWorkflowScopeInput
scope.clientIdsrequiredarray of string
scope.moderequiredstring
StatusBodyDescription
201application/json, WorkflowSaveViewCreated.
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 automation:manage.
404application/problem+json, ProblemDetailsNo library workflow has that key.
422application/problem+json, ProblemDetailsOpportunity workflows run on the sales pipeline, which only an MSP practice has.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

201 response body

FieldTypeDescription
actions24hrequiredinteger
clientWorkflowRef

workflowRef is any named thing the console shows: a client, a user, a role.

client.idrequiredstring
client.namerequiredstring
conflictsrequiredarray of WorkflowConflict
conflicts[].fieldrequiredstring
conflicts[].messagerequiredstring
conflicts[].workflowIdrequiredstring
conflicts[].workflowNamerequiredstring
createdAtrequiredstring (date-time)
definitionrequiredany

Arbitrary JSON.

descriptionrequiredstring
enabledrequiredboolean
idrequiredstring
issuesrequiredarray of WorkflowIssue
issues[].clientsrequiredarray of string
issues[].coderequiredstring
issues[].messagerequiredstring
issues[].pathstring
lastRunAtstring (date-time) or null
namerequiredstring
nextRunAtstring (date-time) or null
pausedAtstring (date-time) or null
pausedReasonstring or null
presetKeystring or null
rowVersionrequiredinteger

int64.

runOrderrequiredinteger
scoperequiredWorkflowScopeView
scope.clientsrequiredarray of WorkflowRef
scope.clients[].idrequiredstring
scope.clients[].namerequiredstring
scope.moderequiredstring, one of all, except, only
sourcerequiredstring
statusrequiredstring, one of needs_attention, off, on, paused
triggerKindrequiredstring
updatedAtrequiredstring (date-time)
updatedBystring or null
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/workflows/library/<key>/install' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"name": "string",
"scope": {
"clientIds": [
"string"
],
"mode": "string"
}
}'

GETautomation:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Get workflow references

NameInTypeRequiredDescription
clientsquerystringNo
StatusBodyDescription
200application/json, WorkflowReferencesViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold automation:manage.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

200 response body

FieldTypeDescription
groupsrequiredarray of WorkflowNamedRefView
groups[].missingInrequiredarray of string
groups[].namerequiredstring
queuesrequiredarray of WorkflowNamedRefView
queues[].missingInrequiredarray of string
queues[].namerequiredstring
schedulesrequiredarray of WorkflowNamedRefView
schedules[].missingInrequiredarray of string
schedules[].namerequiredstring
statusesrequiredarray of WorkflowNamedRefView
statuses[].missingInrequiredarray of string
statuses[].namerequiredstring
templatesrequiredarray of WorkflowNamedRefView
templates[].missingInrequiredarray of string
templates[].namerequiredstring
unavailableClientsrequiredarray of WorkflowRef
unavailableClients[].idrequiredstring
unavailableClients[].namerequiredstring
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/workflows/references?clients=<clients>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETautomation:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Get workflow registry

NameInTypeRequiredDescription
entityquerystringNo
StatusBodyDescription
200application/json, WorkflowRegistryViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold automation:manage.
404application/problem+json, ProblemDetailsNo resource matches.
422application/problem+json, ProblemDetailsOpportunity workflows run on the sales pipeline, which only an MSP practice has.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

200 response body

FieldTypeDescription
airequiredWorkflowAIAvailability
ai.availablerequiredboolean
ai.linkrequiredstring
ai.messagerequiredstring
ai.reasonrequiredstring
fieldsrequiredarray of WorkflowFieldView
fields[].byNamerequiredboolean
fields[].enumrequiredarray of string
fields[].kindrequiredstring
fields[].labelrequiredstring
fields[].namerequiredstring
fields[].operatorsrequiredarray of string
fields[].timeBasedrequiredboolean
fields[].writablerequiredboolean
limitsrequiredWorkflowLimitsView
limits.maxAiStepsrequiredinteger
limits.maxDepthrequiredinteger
limits.maxStepsrequiredinteger
mspModerequiredboolean
placeholdersrequiredarray of WorkflowPlaceholderView
placeholders[].aiOnlyrequiredboolean
placeholders[].tokenrequiredstring
placeholders[].triggersrequiredarray of string
recipientsrequiredobject
rolesrequiredarray of WorkflowRef
roles[].idrequiredstring
roles[].namerequiredstring
stepTypesrequiredobject
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/workflows/registry?entity=<entity>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETautomation:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Get workflow settings

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

200 response body

FieldTypeDescription
maxActionsPerHourrequiredinteger
maxClientEmailsPerTicketDayrequiredinteger
pausedrequiredboolean
rowVersionrequiredinteger

int64.

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/workflows/settings' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUTautomation:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

Put workflow settings

Required, sent as application/json.

FieldTypeDescription
maxActionsPerHourrequiredinteger
maxClientEmailsPerTicketDayrequiredinteger
pausedrequiredboolean
rowVersionrequiredinteger

int64.

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

200 response body

FieldTypeDescription
maxActionsPerHourrequiredinteger
maxClientEmailsPerTicketDayrequiredinteger
pausedrequiredboolean
rowVersionrequiredinteger

int64.

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/workflows/settings' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"maxActionsPerHour": 0,
"maxClientEmailsPerTicketDay": 0,
"paused": false,
"rowVersion": 0
}'

POSTautomation:manageshared facehosteditmspremote

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

Source: [object Object]

Test workflow

NameInTypeRequiredDescription
entityquerystringNo

Required, sent as application/json.

FieldTypeDescription
definitionrequiredany

Arbitrary JSON.

opportunityIdrequiredstring
scopeWorkflowScopeInput
scope.clientIdsrequiredarray of string
scope.moderequiredstring
sourcerequiredstring
workflowIdrequiredstring
StatusBodyDescription
200application/json, OppWorkflowTestViewSuccess.
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 automation:manage.
404application/problem+json, ProblemDetailsNo resource matches.
422application/problem+json, ProblemDetailsOpportunity workflows run on the sales pipeline, which only an MSP practice has.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no practice database for this request yet.

200 response body

FieldTypeDescription
entityrequiredstring
matchesrequiredarray of OppTestMatchView
matches[].activitiesrequiredarray of string
matches[].aiStepstring or null
matches[].changesrequiredarray of WorkflowChangeView
matches[].changes[].fieldrequiredstring
matches[].changes[].fromrequiredstring
matches[].changes[].torequiredstring
matches[].emailsrequiredarray of string
matches[].missingrequiredarray of MissingRef
matches[].missing[].namerequiredstring
matches[].missing[].steprequiredstring
matches[].opportunityrequiredWorkflowRef

workflowRef is any named thing the console shows: a client, a user, a role.

matches[].opportunity.idrequiredstring
matches[].opportunity.namerequiredstring
matches[].pathrequiredarray of string
matches[].recipientsrequiredarray of WorkflowRecipientView
matches[].recipients[].kindrequiredstring
matches[].recipients[].labelrequiredstring
matches[].recipients[].missingrequiredboolean
matches[].skippedstring or null
matches[].wouldCreaterequiredarray of string
totalMatchedrequiredinteger
truncatedrequiredboolean
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/workflows/test?entity=<entity>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"definition": "string",
"opportunityId": "string",
"scope": {
"clientIds": [
"string"
],
"mode": "string"
},
"source": "string",
"workflowId": "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.