Skip to content

Depot mdmzerotouch

Registers the zero-touch and KME 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.

POSTmdm:enrolltenant facehosteditmspremote

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

Source: [object Object]

createMdmKnoxKmeProfile builds a Samsung Knox Mobile Enrollment profile for a company-owned enrollment token, with the steps to enter it in the Knox Admin Portal.

Outpost keeps a copy without the token’s value.

Required, sent as application/json.

FieldTypeDescription
companyNamerequiredstring
enrollmentTokenPublicIdrequiredstring
namerequiredstring
StatusBodyDescription
201application/json, KnoxKmeViewCreated.
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:enroll.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.

201 response body

FieldTypeDescription
enrollmentTokenrequiredZeroTouchTokenView

zeroTouchTokenView names the enrollment token a configuration or profile uses.

enrollmentToken.expiresAtrequiredstring (date-time)
enrollmentToken.moderequiredstring
enrollmentToken.ownershiprequiredstring
enrollmentToken.publicIdrequiredstring
enrollmentToken.revokedrequiredboolean
instructionsrequiredarray of string
namerequiredstring
noterequiredstring
profilerequiredKmeProfile

KmeProfile is what the operator enters in the Knox Admin Portal's KME profile form, field by field.

profile.companyNamestring
profile.customJsonrequiredstring
profile.emmAgentApkUrlrequiredstring
profile.enrollmentModerequiredstring
profile.leaveAllSystemAppsEnabledrequiredboolean
profile.profileNamerequiredstring
profile.profileTyperequiredstring
publicIdrequiredstring
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/mdm/android/knox-kme-profile' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"companyName": "string",
"enrollmentTokenPublicId": "string",
"name": "string"
}'

GETmdm:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

getMdmZeroTouch shows the client’s linked zero-touch account and the steps a customer follows to grant Outpost access before linking.

StatusBodyDescription
200application/json, ZeroTouchStatusViewSuccess.
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:read.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.

200 response body

FieldTypeDescription
bindingZeroTouchBindingView
binding.customerIdrequiredstring
binding.defaultConfigurationNamestring or null
binding.publicIdrequiredstring
binding.staterequiredstring
grantStepsrequiredarray of string
serviceAccountEmailstring 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/mdm/android/zero-touch' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUTmdm:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

bindMdmZeroTouch links the client’s zero-touch customer account.

Outpost checks with Google that the customer granted Outpost’s service account first; until then the answer is a validation problem with the next step.

Required, sent as application/json.

FieldTypeDescription
customerIdrequiredstring
StatusBodyDescription
200application/json, ZeroTouchBindingViewSuccess.
201application/json, ZeroTouchBindingViewCreated.
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:manage.
404application/problem+json, ProblemDetailsNo resource matches.
409application/problem+json, ProblemDetailsAnother zero-touch account is already linked. Unlink it first.
422application/problem+json, ProblemDetailsThe request was refused.
429application/problem+json, ProblemDetailsToo many requests to Google. Try again in a few minutes.
500application/problem+json, ProblemDetailsCould not save the zero-touch account.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.

200 response body

FieldTypeDescription
customerIdrequiredstring
defaultConfigurationNamestring or null
publicIdrequiredstring
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 PUT 'https://depot.example.com/api/v1/mdm/android/zero-touch' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"customerId": "string"
}'

DELETEmdm:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

unbindMdmZeroTouch unlinks the client’s zero-touch account.

Devices keep whatever configuration they have in Google; this works while device management is switched off.

StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mdm:manage.
404application/problem+json, ProblemDetailsNo zero-touch account is linked.
409application/problem+json, ProblemDetailsOutpost can no longer reach this zero-touch account. Check that Outpost’s service account still has access, then link the account again.
422application/problem+json, ProblemDetailsThe request was refused.
429application/problem+json, ProblemDetailsToo many requests to Google. Try again in a few minutes.
500application/problem+json, ProblemDetailsCould not read the zero-touch account.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.
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/mdm/android/zero-touch' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/mdm/android/zero-touch/configurations

Section titled “GET /api/v1/mdm/android/zero-touch/configurations”

GETmdm:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

listMdmZeroTouchConfigurations lists the zero-touch account’s configurations and the enrollment token each one hands devices.

StatusBodyDescription
200application/json, PagedResultZeroTouchConfigurationViewSuccess.
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:read.
409application/problem+json, ProblemDetailsLink a zero-touch account first.
422application/problem+json, ProblemDetailsThe request was refused.
429application/problem+json, ProblemDetailsToo many requests to Google. Try again in a few minutes.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.

200 response body

FieldTypeDescription
itemsrequiredarray of ZeroTouchConfigurationView
items[].companyNamerequiredstring
items[].configurationIdrequiredstring
items[].configurationNamerequiredstring
items[].contactEmailrequiredstring
items[].contactPhonerequiredstring
items[].customMessagerequiredstring
items[].enrollmentTokenZeroTouchTokenView

zeroTouchTokenView names the enrollment token a configuration or profile uses.

items[].enrollmentToken.expiresAtrequiredstring (date-time)
items[].enrollmentToken.moderequiredstring
items[].enrollmentToken.ownershiprequiredstring
items[].enrollmentToken.publicIdrequiredstring
items[].enrollmentToken.revokedrequiredboolean
items[].isDefaultrequiredboolean
items[].namerequiredstring
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/mdm/android/zero-touch/configurations' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/mdm/android/zero-touch/configurations

Section titled “POST /api/v1/mdm/android/zero-touch/configurations”

POSTmdm:managetenant facehosteditmspremote

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

Source: [object Object]

createMdmZeroTouchConfiguration creates a zero-touch configuration that enrolls new devices into Outpost with the chosen company-owned enrollment token.

isDefault makes it apply to newly claimed devices automatically.

Required, sent as application/json.

FieldTypeDescription
companyNamestring or null
configurationNamestring or null
contactEmailstring or null
contactPhonestring or null
customMessagestring or null
enrollmentTokenPublicIdstring or null
isDefaultboolean or null
StatusBodyDescription
201application/json, ZeroTouchConfigurationViewCreated.
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:manage.
409application/problem+json, ProblemDetailsLink a zero-touch account first.
422application/problem+json, ProblemDetailsAndroid Device Policy is not offered to this zero-touch account, so Outpost cannot enroll its devices.
429application/problem+json, ProblemDetailsToo many requests to Google. Try again in a few minutes.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.

201 response body

FieldTypeDescription
companyNamerequiredstring
configurationIdrequiredstring
configurationNamerequiredstring
contactEmailrequiredstring
contactPhonerequiredstring
customMessagerequiredstring
enrollmentTokenZeroTouchTokenView

zeroTouchTokenView names the enrollment token a configuration or profile uses.

enrollmentToken.expiresAtrequiredstring (date-time)
enrollmentToken.moderequiredstring
enrollmentToken.ownershiprequiredstring
enrollmentToken.publicIdrequiredstring
enrollmentToken.revokedrequiredboolean
isDefaultrequiredboolean
namerequiredstring
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/mdm/android/zero-touch/configurations' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"companyName": "string",
"configurationName": "string",
"contactEmail": "string",
"contactPhone": "string",
"customMessage": "string",
"enrollmentTokenPublicId": "string",
"isDefault": false
}'

PATCH /api/v1/mdm/android/zero-touch/configurations/{configId}

Section titled “PATCH /api/v1/mdm/android/zero-touch/configurations/{configId}”

PATCHmdm:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

updateMdmZeroTouchConfiguration changes a zero-touch configuration: its details, its enrollment token, or whether it is the default.

NameInTypeRequiredDescription
configIdpathstringYes

Required, sent as application/json.

FieldTypeDescription
companyNamestring or null
configurationNamestring or null
contactEmailstring or null
contactPhonestring or null
customMessagestring or null
enrollmentTokenPublicIdstring or null
isDefaultboolean or null
StatusBodyDescription
200application/json, ZeroTouchConfigurationViewSuccess.
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:manage.
404application/problem+json, ProblemDetailsConfiguration not found.
409application/problem+json, ProblemDetailsLink a zero-touch account first.
422application/problem+json, ProblemDetailsThe request was refused.
429application/problem+json, ProblemDetailsToo many requests to Google. Try again in a few minutes.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.

200 response body

FieldTypeDescription
companyNamerequiredstring
configurationIdrequiredstring
configurationNamerequiredstring
contactEmailrequiredstring
contactPhonerequiredstring
customMessagerequiredstring
enrollmentTokenZeroTouchTokenView

zeroTouchTokenView names the enrollment token a configuration or profile uses.

enrollmentToken.expiresAtrequiredstring (date-time)
enrollmentToken.moderequiredstring
enrollmentToken.ownershiprequiredstring
enrollmentToken.publicIdrequiredstring
enrollmentToken.revokedrequiredboolean
isDefaultrequiredboolean
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 PATCH 'https://depot.example.com/api/v1/mdm/android/zero-touch/configurations/<configId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"companyName": "string",
"configurationName": "string",
"contactEmail": "string",
"contactPhone": "string",
"customMessage": "string",
"enrollmentTokenPublicId": "string",
"isDefault": false
}'

GET /api/v1/mdm/android/zero-touch/devices

Section titled “GET /api/v1/mdm/android/zero-touch/devices”

GETmdm:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

listMdmZeroTouchDevices lists the devices claimed for the client’s zero-touch account, one Google page at a time (pass nextPageToken back as pageToken).

NameInTypeRequiredDescription
pageTokenquerystringNo
StatusBodyDescription
200application/json, ZeroTouchDevicesViewSuccess.
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:read.
409application/problem+json, ProblemDetailsLink a zero-touch account first.
422application/problem+json, ProblemDetailsThe request was refused.
429application/problem+json, ProblemDetailsToo many requests to Google. Try again in a few minutes.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.

200 response body

FieldTypeDescription
itemsrequiredarray of ZeroTouchDeviceView
items[].configurationIdstring or null
items[].deviceIdrequiredstring
items[].imeirequiredstring
items[].manufacturerrequiredstring
items[].meidrequiredstring
items[].modelrequiredstring
items[].serialNumberrequiredstring
nextPageTokenstring 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/mdm/android/zero-touch/devices?pageToken=<pageToken>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/mdm/android/zero-touch/devices/apply-configuration

Section titled “POST /api/v1/mdm/android/zero-touch/devices/apply-configuration”

POSTmdm:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

applyMdmZeroTouchConfiguration applies one of the account’s configurations to a claimed device, so it enrolls into Outpost the next time it is set up.

Required, sent as application/json.

FieldTypeDescription
configurationIdrequiredstring
deviceIdrequiredstring
StatusBodyDescription
204NoneSuccess, with no body.
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:manage.
409application/problem+json, ProblemDetailsLink a zero-touch account first.
422application/problem+json, ProblemDetailsThe request was refused.
429application/problem+json, ProblemDetailsToo many requests to Google. Try again in a few minutes.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.
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/android/zero-touch/devices/apply-configuration' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"configurationId": "string",
"deviceId": "string"
}'

POST /api/v1/mdm/android/zero-touch/devices/remove-configuration

Section titled “POST /api/v1/mdm/android/zero-touch/devices/remove-configuration”

POSTmdm:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

removeMdmZeroTouchConfiguration removes the configuration from a claimed device, so it sets up as an ordinary device.

This works while device management is switched off.

Required, sent as application/json.

FieldTypeDescription
configurationIdrequiredstring
deviceIdrequiredstring
StatusBodyDescription
204NoneSuccess, with no body.
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:manage.
409application/problem+json, ProblemDetailsLink a zero-touch account first.
422application/problem+json, ProblemDetailsThe request was refused.
429application/problem+json, ProblemDetailsToo many requests to Google. Try again in a few minutes.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsDevice management is not available on this Depot.
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/android/zero-touch/devices/remove-configuration' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"configurationId": "string",
"deviceId": "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.