Skip to content

Depot mdmactions

Registers the device action, destructive, bulk lock and activate 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.

POST /api/v1/endpoints/{agentID}/mdm/actions/{action}

Section titled “POST /api/v1/endpoints/{agentID}/mdm/actions/{action}”

POSTmdm:commandtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

postMdmAction sends an everyday MDM command (restart, lock, locate, lost mode, rename, …) to a device and returns the queued command.

NameInTypeRequiredDescription
actionpathstringYes
agentIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
paramsMdmActionParams

mdmActionParams is MdmActionRequest.params: the parameters a verb may take.

params.deviceNamestring or null
params.disallowProximitySetupboolean or null
params.footnotestring or null
params.keepUserDataboolean or null
params.messagestring or null
params.notifyUserboolean or null
params.phoneNumberstring or null
params.pinstring or null
params.preserveDataPlanboolean or null
params.protectedboolean or null
params.returnToServiceboolean or null
params.typestring or null
params.wipeExternalStorageboolean or null
reasonstring or null
StatusBodyDescription
200application/json, MdmDiagnosticsRequestedSuccess.
202application/json, MdmAgentActionResultAccepted.
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 mdm:command.
404application/problem+json, ProblemDetailsNo such device action.
409application/problem+json, ProblemDetailsThis device is not enrolled in device management.
500application/problem+json, ProblemDetailsNo client context in request.
503application/problem+json, ProblemDetailsCollecting diagnostics needs file storage and the device management address configured on this Depot.

200 response body

FieldTypeDescription
commandrequiredMdmCommandView
command.actorUserIdstring or null
command.approvalIdstring or null
command.commandIdrequiredstring
command.completedAtstring (date-time) or null
command.deliveredAtstring (date-time) or null
command.expiresAtstring (date-time) or null
command.originrequiredstring
command.pushedAtstring (date-time) or null
command.queuedAtrequiredstring (date-time)
command.reasonCodestring or null
command.requestTyperequiredstring
command.staterequiredstring
command.verbrequiredstring
diagnosticsrequiredMdmDiagnosticView

mdmDiagnosticView is the wire MdmDiagnosticUpload.

diagnostics.commandIdstring or null
diagnostics.completedAtstring (date-time) or null
diagnostics.expiresAtrequiredstring (date-time)
diagnostics.maxBytesrequiredinteger

int64.

diagnostics.publicIdrequiredstring
diagnostics.requestedAtrequiredstring (date-time)
diagnostics.requestedByUserIdstring or null
diagnostics.sizeBytesrequiredinteger

int64.

diagnostics.staterequiredstring
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>/mdm/actions/<action>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"params": {
"deviceName": "string",
"disallowProximitySetup": false,
"footnote": "string",
"keepUserData": false,
"message": "string",
"notifyUser": false,
"phoneNumber": "string",
"pin": "string",
"preserveDataPlan": false,
"protected": false,
"returnToService": false,
"type": "string",
"wipeExternalStorage": false
},
"reason": "string"
}'

POST /api/v1/endpoints/{agentID}/mdm/activate

Section titled “POST /api/v1/endpoints/{agentID}/mdm/activate”

POSTmdm:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

postMdmActivate activates a device held over the plan’s mobile cap (R83).

The cap is asked again, without the held device in the count: still no room is the plan’s 402 and nothing changes. With room the enrollment goes active, is audited, is handed to the reconciler so Outpost’s policy reaches it, and its held alert resolves. A device that is not held is 409.

NameInTypeRequiredDescription
agentIDpathstringYesA uuid.
StatusBodyDescription
200application/json, MdmEnrollmentViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mdm:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
409application/problem+json, ProblemDetailsThis device is not enrolled in device management.
500application/problem+json, ProblemDetailsNo client context in request.

200 response body

FieldTypeDescription
agentIdrequiredstring
enrolledAtstring (date-time) or null
enrolledByNamedUserIdstring or null
enrollmentTyperequiredstring
lastCheckInAtstring (date-time) or null
lastStatusReportAtstring (date-time) or null
ownershiprequiredstring
providerrequiredstring
publicIdrequiredstring
pushTokenStalerequiredboolean
serialNumberstring or null
staterequiredstring
supervisedrequiredboolean
unenrollReasonstring or null
unenrolledAtstring (date-time) 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 POST 'https://depot.example.com/api/v1/endpoints/<agentID>/mdm/activate' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/endpoints/{agentID}/mdm/destructive/{action}

Section titled “POST /api/v1/endpoints/{agentID}/mdm/destructive/{action}”

POSTmdm:wipetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

postMdmDestructive requests a wipe, Activation Lock clear, passcode clear, unenroll or Fresh Start.

200 with the command when it may run now; 202 with the approval when the practice’s two-person rule needs a second technician. A Windows wipe or Fresh Start ends the PC’s device management once the PC acknowledges it (R112c). For Fresh Start: the PC will need to enroll in MDM again afterwards. If the Outpost agent is installed, it stays, and you can re-enroll it with Enroll in Windows MDM.

NameInTypeRequiredDescription
actionpathstringYes
agentIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
paramsMdmActionParams

mdmActionParams is MdmActionRequest.params: the parameters a verb may take.

params.deviceNamestring or null
params.disallowProximitySetupboolean or null
params.footnotestring or null
params.keepUserDataboolean or null
params.messagestring or null
params.notifyUserboolean or null
params.phoneNumberstring or null
params.pinstring or null
params.preserveDataPlanboolean or null
params.protectedboolean or null
params.returnToServiceboolean or null
params.typestring or null
params.wipeExternalStorageboolean or null
reasonstring or null
StatusBodyDescription
200application/json, MdmActionResultSuccess.
202application/json, MdmApprovalResultAccepted.
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 mdm:wipe.
404application/problem+json, ProblemDetailsNo such device action.
409application/problem+json, ProblemDetailsThis device is not enrolled in device management.
500application/problem+json, ProblemDetailsNo client context in request.

200 response body

FieldTypeDescription
commandrequiredMdmCommandView
command.actorUserIdstring or null
command.approvalIdstring or null
command.commandIdrequiredstring
command.completedAtstring (date-time) or null
command.deliveredAtstring (date-time) or null
command.expiresAtstring (date-time) or null
command.originrequiredstring
command.pushedAtstring (date-time) or null
command.queuedAtrequiredstring (date-time)
command.reasonCodestring or null
command.requestTyperequiredstring
command.staterequiredstring
command.verbrequiredstring
detailstring
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>/mdm/destructive/<action>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"params": {
"deviceName": "string",
"disallowProximitySetup": false,
"footnote": "string",
"keepUserData": false,
"message": "string",
"notifyUser": false,
"phoneNumber": "string",
"pin": "string",
"preserveDataPlan": false,
"protected": false,
"returnToService": false,
"type": "string",
"wipeExternalStorage": false
},
"reason": "string"
}'

POSTmdm:wipetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

postMdmBulkLock locks up to 500 devices.

Below the practice’s bulk lock threshold the locks go out now (200); at or above it a second technician must approve (202).

Required, sent as application/json.

FieldTypeDescription
agentIdsrequiredarray of string
messagestring or null
phoneNumberstring or null
reasonstring or null
StatusBodyDescription
200application/json, BulkLockResultSuccess.
202application/json, MdmApprovalResultAccepted.
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 mdm:wipe.
404application/problem+json, ProblemDetailsEndpoint not found.
409application/problem+json, ProblemDetailsThis device is not enrolled in device management.
500application/problem+json, ProblemDetailsNo client context in request.

200 response body

FieldTypeDescription
commandsrequiredarray of MdmCommandView
commands[].actorUserIdstring or null
commands[].approvalIdstring or null
commands[].commandIdrequiredstring
commands[].completedAtstring (date-time) or null
commands[].deliveredAtstring (date-time) or null
commands[].expiresAtstring (date-time) or null
commands[].originrequiredstring
commands[].pushedAtstring (date-time) or null
commands[].queuedAtrequiredstring (date-time)
commands[].reasonCodestring or null
commands[].requestTyperequiredstring
commands[].staterequiredstring
commands[].verbrequiredstring
failedrequiredarray of BulkLockFailure
failed[].agentIdrequiredstring
failed[].detailrequiredstring
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/mdm/bulk-actions/lock' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"agentIds": [
"string"
],
"message": "string",
"phoneNumber": "string",
"reason": "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.