Skip to content

Depot mdmabm

Registers the ABM token, ADE profile and ADE device 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.

GETmdm:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

listMdmAbmTokens lists this client’s Apple Business Manager tokens.

NameInTypeRequiredDescription
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
StatusBodyDescription
200application/json, PagedResultAbmTokenViewSuccess.
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, ProblemDetailsApple Business Manager is not available on this Depot.

200 response body

FieldTypeDescription
itemsrequiredarray of AbmTokenView
items[].apiClientIdstring or null
items[].apiKeyIdstring or null
items[].createdAtrequiredstring (date-time)
items[].defaultAdeProfileIdstring or null
items[].displayNamerequiredstring
items[].expiresInDaysinteger or null
items[].hasApiKeyrequiredboolean
items[].hasServerTokenrequiredboolean
items[].lastSyncAtstring (date-time) or null
items[].lastSyncErrorstring or null
items[].notAfterstring (date-time) or null
items[].orgNamestring or null
items[].ownerstring or null
items[].publicIdrequiredstring
items[].publicKeyCertPemrequiredstring
items[].rowVersionrequiredinteger

int64.

items[].staterequiredstring
items[].termsPendingrequiredboolean
items[].termsStaterequiredstring
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/apple/abm-tokens?page=0&pageSize=0' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTmdm:managetenant facehosteditmspremote

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

Source: [object Object]

createMdmAbmToken starts an Apple Business Manager connection: Outpost makes the keypair and answers with the public key certificate to upload to the MDM server in Apple Business Manager.

Required, sent as application/json.

FieldTypeDescription
displayNamerequiredstring
ownerstring or null
StatusBodyDescription
201application/json, AbmTokenViewCreated.
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 Apple Business Manager token has that id.
409application/problem+json, ProblemDetailsThe token changed since it was read. Reload it and try again.
500application/problem+json, ProblemDetailsCould not save the Apple Business Manager token.
503application/problem+json, ProblemDetailsApple Business Manager is not available on this Depot.

201 response body

FieldTypeDescription
apiClientIdstring or null
apiKeyIdstring or null
createdAtrequiredstring (date-time)
defaultAdeProfileIdstring or null
displayNamerequiredstring
expiresInDaysinteger or null
hasApiKeyrequiredboolean
hasServerTokenrequiredboolean
lastSyncAtstring (date-time) or null
lastSyncErrorstring or null
notAfterstring (date-time) or null
orgNamestring or null
ownerstring or null
publicIdrequiredstring
publicKeyCertPemrequiredstring
rowVersionrequiredinteger

int64.

staterequiredstring
termsPendingrequiredboolean
termsStaterequiredstring
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/apple/abm-tokens' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"displayName": "string",
"owner": "string"
}'

PATCH /api/v1/mdm/apple/abm-tokens/{publicId}

Section titled “PATCH /api/v1/mdm/apple/abm-tokens/{publicId}”

PATCHmdm:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

updateMdmAbmToken renames a token, records its owner, uploads the server token downloaded from Apple Business Manager, or sets the Apple Business API key.

A new server token replaces the old one: Apple invalidates the previous download for that MDM server.

NameInTypeRequiredDescription
publicIdpathstringYes

Required, sent as application/json.

FieldTypeDescription
apiClientIdstring or null
apiKeyIdstring or null
apiPrivateKeystring or null
clearApiKeyrequiredboolean
displayNamestring or null
ownerstring or null
rowVersionrequiredinteger

int64.

serverTokenstring or null
StatusBodyDescription
200application/json, AbmTokenViewSuccess.
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 Apple Business Manager token has that id.
409application/problem+json, ProblemDetailsThe token changed since it was read. Reload it and try again.
500application/problem+json, ProblemDetailsCould not save the Apple Business Manager token.
503application/problem+json, ProblemDetailsApple Business Manager is not available on this Depot.

200 response body

FieldTypeDescription
apiClientIdstring or null
apiKeyIdstring or null
createdAtrequiredstring (date-time)
defaultAdeProfileIdstring or null
displayNamerequiredstring
expiresInDaysinteger or null
hasApiKeyrequiredboolean
hasServerTokenrequiredboolean
lastSyncAtstring (date-time) or null
lastSyncErrorstring or null
notAfterstring (date-time) or null
orgNamestring or null
ownerstring or null
publicIdrequiredstring
publicKeyCertPemrequiredstring
rowVersionrequiredinteger

int64.

staterequiredstring
termsPendingrequiredboolean
termsStaterequiredstring
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/apple/abm-tokens/<publicId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"apiClientId": "string",
"apiKeyId": "string",
"apiPrivateKey": "string",
"clearApiKey": false,
"displayName": "string",
"owner": "string",
"rowVersion": 0,
"serverToken": "string"
}'

DELETE /api/v1/mdm/apple/abm-tokens/{publicId}

Section titled “DELETE /api/v1/mdm/apple/abm-tokens/{publicId}”

DELETEmdm:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

deleteMdmAbmToken removes a token, its ADE profiles and its secrets.

Devices stay assigned to the MDM server in Apple Business Manager.

NameInTypeRequiredDescription
publicIdpathstringYes
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 Apple Business Manager token has that id.
409application/problem+json, ProblemDetailsThe token changed since it was read. Reload it and try again.
500application/problem+json, ProblemDetailsCould not save the Apple Business Manager token.
503application/problem+json, ProblemDetailsApple Business Manager 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/apple/abm-tokens/<publicId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/mdm/apple/abm-tokens/{publicId}/sync

Section titled “POST /api/v1/mdm/apple/abm-tokens/{publicId}/sync”

POSTmdm:managetenant facehosteditmspremoteIdempotent

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

Source: [object Object]

syncMdmAbmToken pulls device changes from Apple now and gives devices with no profile the token’s default profile.

The outcome, including Apple’s terms-pending refusal, is on the returned token.

NameInTypeRequiredDescription
publicIdpathstringYes
StatusBodyDescription
200application/json, AbmTokenViewSuccess.
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 Apple Business Manager token has that id.
409application/problem+json, ProblemDetailsThe token changed since it was read. Reload it and try again.
500application/problem+json, ProblemDetailsCould not save the Apple Business Manager token.
503application/problem+json, ProblemDetailsApple Business Manager is not available on this Depot.

200 response body

FieldTypeDescription
apiClientIdstring or null
apiKeyIdstring or null
createdAtrequiredstring (date-time)
defaultAdeProfileIdstring or null
displayNamerequiredstring
expiresInDaysinteger or null
hasApiKeyrequiredboolean
hasServerTokenrequiredboolean
lastSyncAtstring (date-time) or null
lastSyncErrorstring or null
notAfterstring (date-time) or null
orgNamestring or null
ownerstring or null
publicIdrequiredstring
publicKeyCertPemrequiredstring
rowVersionrequiredinteger

int64.

staterequiredstring
termsPendingrequiredboolean
termsStaterequiredstring
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/apple/abm-tokens/<publicId>/sync' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETmdm:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

listMdmAdeDevices lists the devices Apple Business Manager assigns to this client’s MDM servers, for one token with ?abmTokenId=.

NameInTypeRequiredDescription
abmTokenIdquerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
StatusBodyDescription
200application/json, PagedResultAdeDeviceViewSuccess.
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, ProblemDetailsApple Business Manager is not available on this Depot.

200 response body

FieldTypeDescription
itemsrequiredarray of AdeDeviceView
items[].abmTokenIdrequiredstring
items[].assignedAdeProfileIdstring or null
items[].colorstring or null
items[].descriptionstring or null
items[].deviceFamilystring or null
items[].lastSeenInSyncAtrequiredstring (date-time)
items[].modelstring or null
items[].opDatestring (date-time) or null
items[].opTypestring or null
items[].osstring or null
items[].profileStatusstring or null
items[].serialNumberrequiredstring
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/apple/ade-devices?abmTokenId=<abmTokenId>&page=0&pageSize=0' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTmdm:enrolltenant facehosteditmspremoteIdempotent

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

Source: [object Object]

assignMdmAdeDevices gives devices an ADE profile at Apple.

They use it the next time they run Setup Assistant (a new or erased device).

Required, sent as application/json.

FieldTypeDescription
abmTokenIdrequiredstring
profileIdrequiredstring
serialsrequiredarray of string
StatusBodyDescription
200application/json, AdeAssignResultSuccess.
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.
409application/problem+json, ProblemDetailsUpload the server token from Apple Business Manager first.
500application/problem+json, ProblemDetailsThe request failed.
502application/problem+json, ProblemDetailsApple did not accept the assignment. Try again, and check the token in Apple Business Manager if it keeps failing.
503application/problem+json, ProblemDetailsApple Business Manager is not available on this Depot.

200 response body

FieldTypeDescription
assignedrequiredarray of string
refusedrequiredarray of string
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/apple/ade-devices/assign' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"abmTokenId": "string",
"profileId": "string",
"serials": [
"string"
]
}'

GETmdm:readtenant facehosteditmspremoteIdempotent

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

Source: [object Object]

listMdmAdeProfiles lists the Automated Device Enrollment profiles, for one token with ?abmTokenId=.

NameInTypeRequiredDescription
abmTokenIdquerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
StatusBodyDescription
200application/json, PagedResultAdeProfileViewSuccess.
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, ProblemDetailsApple Business Manager is not available on this Depot.

200 response body

FieldTypeDescription
itemsrequiredarray of AdeProfileView
items[].abmTokenIdrequiredstring
items[].appleProfileUuidstring or null
items[].isDefaultrequiredboolean
items[].namerequiredstring
items[].profilerequiredany

Arbitrary JSON.

items[].publicIdrequiredstring
items[].rowVersionrequiredinteger

int64.

items[].urlrequiredstring
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/apple/ade-profiles?abmTokenId=<abmTokenId>&page=0&pageSize=0' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTmdm:enrolltenant facehosteditmspremote

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

Source: [object Object]

createMdmAdeProfile defines a new Automated Device Enrollment profile.

It is sent to Apple the first time it is assigned; devices enrolling with it contact this client’s ADE URL.

Required, sent as application/json.

FieldTypeDescription
abmTokenIdrequiredstring
isDefaultboolean or null
namestring or null
profilerequiredany

Arbitrary JSON.

rowVersionrequiredinteger

int64.

StatusBodyDescription
201application/json, AdeProfileViewCreated.
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.
404application/problem+json, ProblemDetailsNo ADE profile has that id.
409application/problem+json, ProblemDetailsThe profile changed since it was read. Reload it and try again.
500application/problem+json, ProblemDetailsCould not save the ADE profile.
503application/problem+json, ProblemDetailsApple Business Manager is not available on this Depot.

201 response body

FieldTypeDescription
abmTokenIdrequiredstring
appleProfileUuidstring or null
isDefaultrequiredboolean
namerequiredstring
profilerequiredany

Arbitrary JSON.

publicIdrequiredstring
rowVersionrequiredinteger

int64.

urlrequiredstring
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/apple/ade-profiles' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"abmTokenId": "string",
"isDefault": false,
"name": "string",
"profile": "string",
"rowVersion": 0
}'

PATCH /api/v1/mdm/apple/ade-profiles/{publicId}

Section titled “PATCH /api/v1/mdm/apple/ade-profiles/{publicId}”

PATCHmdm:enrolltenant facehosteditmspremoteIdempotent

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

Source: [object Object]

updateMdmAdeProfile edits a profile.

A changed body is defined with Apple again on its next assignment (Apple profiles cannot change), so devices already assigned keep the old one until they are assigned again.

NameInTypeRequiredDescription
publicIdpathstringYes

Required, sent as application/json.

FieldTypeDescription
abmTokenIdrequiredstring
isDefaultboolean or null
namestring or null
profilerequiredany

Arbitrary JSON.

rowVersionrequiredinteger

int64.

StatusBodyDescription
200application/json, AdeProfileViewSuccess.
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.
404application/problem+json, ProblemDetailsNo ADE profile has that id.
409application/problem+json, ProblemDetailsThe profile changed since it was read. Reload it and try again.
500application/problem+json, ProblemDetailsCould not save the ADE profile.
503application/problem+json, ProblemDetailsApple Business Manager is not available on this Depot.

200 response body

FieldTypeDescription
abmTokenIdrequiredstring
appleProfileUuidstring or null
isDefaultrequiredboolean
namerequiredstring
profilerequiredany

Arbitrary JSON.

publicIdrequiredstring
rowVersionrequiredinteger

int64.

urlrequiredstring
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/apple/ade-profiles/<publicId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"abmTokenId": "string",
"isDefault": false,
"name": "string",
"profile": "string",
"rowVersion": 0
}'

DELETE /api/v1/mdm/apple/ade-profiles/{publicId}

Section titled “DELETE /api/v1/mdm/apple/ade-profiles/{publicId}”

DELETEmdm:enrolltenant facehosteditmspremoteIdempotent

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

Source: [object Object]

deleteMdmAdeProfile removes a profile from Outpost.

Devices Apple already assigned it keep it until they are assigned another.

NameInTypeRequiredDescription
publicIdpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mdm:enroll.
404application/problem+json, ProblemDetailsNo ADE profile has that id.
409application/problem+json, ProblemDetailsThe profile changed since it was read. Reload it and try again.
500application/problem+json, ProblemDetailsCould not save the ADE profile.
503application/problem+json, ProblemDetailsApple Business Manager 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/apple/ade-profiles/<publicId>' \
-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.