Skip to content

Depot maintenance

Registers the planned-work routes on the TENANT mux.

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

GETincident:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

listMaintenanceWindows pages the schedule, furthest-future first.

THE TOTAL IS THE FILTERED TOTAL, which is the difference between this and what it replaced: the envelope used to report the page’s own length, so a search matching three hundred windows still said fifty and the pager stopped one page in.

NameInTypeRequiredDescription
dirquerystring, one of asc, descNoSort direction.
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
qquerystringNoFree-text search term.
sortquerystring, one of created, scheduled, title, updatedNoSort key.
StatusBodyDescription
200application/json, PagedResultMaintenanceWindowViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold incident:read.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
itemsrequiredarray of MaintenanceWindowView
items[].autoTransitionrequiredboolean
items[].bodystring
items[].completedAtstring (date-time) or null
items[].componentsarray of StatusComponentView
items[].components[].createdAtrequiredstring (date-time)
items[].components[].descriptionstring
items[].components[].groupNamestring
items[].components[].namerequiredstring
items[].components[].publicIdrequiredstring
items[].components[].showUptimerequiredboolean
items[].components[].sortOrderrequiredinteger
items[].components[].statusrequiredstring
items[].components[].updatedAtrequiredstring (date-time)
items[].createdAtrequiredstring (date-time)
items[].publicIdrequiredstring
items[].scheduledEndAtrequiredstring (date-time)
items[].scheduledStartAtrequiredstring (date-time)
items[].startedAtstring (date-time) or null
items[].statusrequiredstring
items[].titlerequiredstring
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/maintenance-windows?dir=asc&page=0&pageSize=0&q=<q>&sort=created' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTincident:managetenant facehosteditmspremote

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

Source: [object Object]

Create maintenance window

Required, sent as application/json.

FieldTypeDescription
autoTransitionboolean or null
bodystring or null
componentIdsrequiredarray of string
scheduledEndAtstring (date-time) or null
scheduledStartAtstring (date-time) or null
titlestring or null
StatusBodyDescription
201application/json, MaintenanceWindowViewCreated.
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 incident:manage.
404application/problem+json, ProblemDetailsNo resource matches.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsThe request was refused.

201 response body

FieldTypeDescription
autoTransitionrequiredboolean
bodystring
completedAtstring (date-time) or null
componentsarray of StatusComponentView
components[].createdAtrequiredstring (date-time)
components[].descriptionstring
components[].groupNamestring
components[].namerequiredstring
components[].publicIdrequiredstring
components[].showUptimerequiredboolean
components[].sortOrderrequiredinteger
components[].statusrequiredstring
components[].updatedAtrequiredstring (date-time)
createdAtrequiredstring (date-time)
publicIdrequiredstring
scheduledEndAtrequiredstring (date-time)
scheduledStartAtrequiredstring (date-time)
startedAtstring (date-time) or null
statusrequiredstring
titlerequiredstring
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/maintenance-windows' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"autoTransition": false,
"body": "string",
"componentIds": [
"string"
],
"scheduledEndAt": "2026-01-01T00:00:00Z",
"scheduledStartAt": "2026-01-01T00:00:00Z",
"title": "string"
}'

GET /api/v1/maintenance-windows/{maintenanceId}

Section titled “GET /api/v1/maintenance-windows/{maintenanceId}”

GETincident:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

getMaintenanceWindow answers the detail read, components included.

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

200 response body

FieldTypeDescription
autoTransitionrequiredboolean
bodystring
completedAtstring (date-time) or null
componentsarray of StatusComponentView
components[].createdAtrequiredstring (date-time)
components[].descriptionstring
components[].groupNamestring
components[].namerequiredstring
components[].publicIdrequiredstring
components[].showUptimerequiredboolean
components[].sortOrderrequiredinteger
components[].statusrequiredstring
components[].updatedAtrequiredstring (date-time)
createdAtrequiredstring (date-time)
publicIdrequiredstring
scheduledEndAtrequiredstring (date-time)
scheduledStartAtrequiredstring (date-time)
startedAtstring (date-time) or null
statusrequiredstring
titlerequiredstring
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/maintenance-windows/<maintenanceId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCH /api/v1/maintenance-windows/{maintenanceId}

Section titled “PATCH /api/v1/maintenance-windows/{maintenanceId}”

PATCHincident:managetenant facehosteditmspremote

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

Source: [object Object]

patchMaintenanceWindow edits the announcement.

It cannot move the status; see decision 1 in the file header.

NameInTypeRequiredDescription
maintenanceIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
autoTransitionboolean or null
bodystring or null
componentIdsrequiredarray of string
scheduledEndAtstring (date-time) or null
scheduledStartAtstring (date-time) or null
titlestring or null
StatusBodyDescription
200application/json, MaintenanceWindowViewSuccess.
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 incident:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
autoTransitionrequiredboolean
bodystring
completedAtstring (date-time) or null
componentsarray of StatusComponentView
components[].createdAtrequiredstring (date-time)
components[].descriptionstring
components[].groupNamestring
components[].namerequiredstring
components[].publicIdrequiredstring
components[].showUptimerequiredboolean
components[].sortOrderrequiredinteger
components[].statusrequiredstring
components[].updatedAtrequiredstring (date-time)
createdAtrequiredstring (date-time)
publicIdrequiredstring
scheduledEndAtrequiredstring (date-time)
scheduledStartAtrequiredstring (date-time)
startedAtstring (date-time) or null
statusrequiredstring
titlerequiredstring
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/maintenance-windows/<maintenanceId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"autoTransition": false,
"body": "string",
"componentIds": [
"string"
],
"scheduledEndAt": "2026-01-01T00:00:00Z",
"scheduledStartAt": "2026-01-01T00:00:00Z",
"title": "string"
}'

POST /api/v1/maintenance-windows/{maintenanceId}/transition

Section titled “POST /api/v1/maintenance-windows/{maintenanceId}/transition”

POSTincident:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

transitionMaintenanceWindow moves a window and stamps what actually happened.

A refused move is 409 and not 400: nothing about the request is malformed, and the same body would have been accepted before somebody else pressed the button.

NameInTypeRequiredDescription
maintenanceIdpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
atstring (date-time) or null
statusstring or null
StatusBodyDescription
200application/json, MaintenanceWindowViewSuccess.
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 incident:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsNo client store in request context.
503application/problem+json, ProblemDetailsThe request was refused.

200 response body

FieldTypeDescription
autoTransitionrequiredboolean
bodystring
completedAtstring (date-time) or null
componentsarray of StatusComponentView
components[].createdAtrequiredstring (date-time)
components[].descriptionstring
components[].groupNamestring
components[].namerequiredstring
components[].publicIdrequiredstring
components[].showUptimerequiredboolean
components[].sortOrderrequiredinteger
components[].statusrequiredstring
components[].updatedAtrequiredstring (date-time)
createdAtrequiredstring (date-time)
publicIdrequiredstring
scheduledEndAtrequiredstring (date-time)
scheduledStartAtrequiredstring (date-time)
startedAtstring (date-time) or null
statusrequiredstring
titlerequiredstring
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 POST 'https://depot.example.com/api/v1/maintenance-windows/<maintenanceId>/transition' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"at": "2026-01-01T00:00:00Z",
"status": "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.