Skip to content

Depot terminallayouts

Registers the saved terminal layout 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.

GET /api/v1/endpoints/{agentID}/terminal-layouts

Section titled “GET /api/v1/endpoints/{agentID}/terminal-layouts”

GETcommand:executetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

getTerminalLayouts returns the endpoint’s default terminal layout, the caller’s own default for the endpoint’s OS family, and whether the caller may change the first and send startup commands here.

NameInTypeRequiredDescription
agentIDpathstringYes
StatusBodyDescription
200application/json, TerminalLayoutsResponseSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold command:execute.
404application/problem+json, ProblemDetailsEndpoint not found.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
accountTerminalLayoutView

terminalLayoutView is a saved layout.

account.tabsrequiredany

Arbitrary JSON.

account.updatedAtrequiredstring (date-time)
account.updatedByrequiredstring
canManageEndpointrequiredboolean
endpointTerminalLayoutView

terminalLayoutView is a saved layout.

endpoint.tabsrequiredany

Arbitrary JSON.

endpoint.updatedAtrequiredstring (date-time)
endpoint.updatedByrequiredstring
osFamilystring or null
startupAllowedrequiredboolean
startupReasonstring
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/endpoints/<agentID>/terminal-layouts' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUT /api/v1/endpoints/{agentID}/terminal-layouts/endpoint

Section titled “PUT /api/v1/endpoints/{agentID}/terminal-layouts/endpoint”

PUTterminal:layout:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

putEndpointTerminalLayout saves the endpoint’s default terminal layout, the tabs every technician’s terminal opens with on this endpoint.

NameInTypeRequiredDescription
agentIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
tabsrequiredarray of TerminalTab
tabs[].interpreterrequiredstring
tabs[].namerequiredstring
tabs[].runAsrequiredstring
tabs[].startuprequiredstring
StatusBodyDescription
200application/json, TerminalLayoutViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold terminal:layout:manage.
404application/problem+json, ProblemDetailsEndpoint not found.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
tabsrequiredany

Arbitrary JSON.

updatedAtrequiredstring (date-time)
updatedByrequiredstring
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/endpoints/<agentID>/terminal-layouts/endpoint' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"tabs": [
{
"interpreter": "string",
"name": "string",
"runAs": "string",
"startup": "string"
}
]
}'

DELETE /api/v1/endpoints/{agentID}/terminal-layouts/endpoint

Section titled “DELETE /api/v1/endpoints/{agentID}/terminal-layouts/endpoint”

DELETEterminal:layout:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

deleteEndpointTerminalLayout clears the endpoint’s default terminal layout.

NameInTypeRequiredDescription
agentIDpathstringYes
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 terminal:layout:manage.
404application/problem+json, ProblemDetailsEndpoint not found.
500application/problem+json, ProblemDetailsNo client store in request context.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X DELETE 'https://depot.example.com/api/v1/endpoints/<agentID>/terminal-layouts/endpoint' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/endpoints/{agentID}/terminal-layouts/startup-sent

Section titled “POST /api/v1/endpoints/{agentID}/terminal-layouts/startup-sent”

POSTcommand:executetenant facehosteditmspremote

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

Source: [object Object]

recordTerminalStartup records that a layout tab’s startup commands are being typed into a shell on this endpoint, and refuses when they may not be.

The console calls it before it sends the commands and sends nothing unless this answers 204, so the audit entry always precedes the input it describes. The commands themselves also land in the shell transcript, as any input does.

NameInTypeRequiredDescription
agentIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
layoutScoperequiredstring
sessionIdrequiredstring
tabNamerequiredstring
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 command:execute.
404application/problem+json, ProblemDetailsEndpoint not found.
422application/problem+json, ProblemDetailsThat layout has no tab with that name.
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.
curl -X POST 'https://depot.example.com/api/v1/endpoints/<agentID>/terminal-layouts/startup-sent' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"layoutScope": "string",
"sessionId": "string",
"tabName": "string"
}'

PUT /api/v1/me/terminal-layouts/{osFamily}

Section titled “PUT /api/v1/me/terminal-layouts/{osFamily}”

PUTcommand:executetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

putMyTerminalLayout saves the caller’s own default terminal layout for one OS family.

It follows them to every client.

NameInTypeRequiredDescription
osFamilypathstringYes

Required, sent as application/json.

FieldTypeDescription
tabsrequiredarray of TerminalTab
tabs[].interpreterrequiredstring
tabs[].namerequiredstring
tabs[].runAsrequiredstring
tabs[].startuprequiredstring
StatusBodyDescription
200application/json, TerminalLayoutViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold command:execute.
404application/problem+json, ProblemDetailsEndpoint not found.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsSaved terminal layouts are not available.

200 response body

FieldTypeDescription
tabsrequiredany

Arbitrary JSON.

updatedAtrequiredstring (date-time)
updatedByrequiredstring
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/me/terminal-layouts/<osFamily>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"tabs": [
{
"interpreter": "string",
"name": "string",
"runAs": "string",
"startup": "string"
}
]
}'

DELETE /api/v1/me/terminal-layouts/{osFamily}

Section titled “DELETE /api/v1/me/terminal-layouts/{osFamily}”

DELETEcommand:executetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

deleteMyTerminalLayout clears the caller’s own default terminal layout for one OS family.

NameInTypeRequiredDescription
osFamilypathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold command:execute.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsSaved terminal layouts are not available.
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/me/terminal-layouts/<osFamily>' \
-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.