Skip to content

Depot mailboxes

Registers the mailbox routes on 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.

GETmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

listMailboxDrivers lists the inbound and outbound drivers this Depot’s mode allows.

POP3 is not offered (E5); an existing POP3 mailbox still loads and saves.

StatusBodyDescription
200application/json, MailboxDriversViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.

200 response body

FieldTypeDescription
inboundrequiredarray of string
outboundrequiredarray 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 GET 'https://depot.example.com/api/v1/mailbox-drivers' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

List mailboxes

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 address, driver, enabled, name, polledNoSort key.
statequerystringNo
StatusBodyDescription
200application/json, PagedResultMailboxViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
itemsrequiredarray of MailboxView
items[].addressrequiredstring
items[].authModerequiredstring
items[].canaryLastSeenAtstring (date-time) or null
items[].canaryLastSentAtstring (date-time) or null
items[].connectedAccountstring
items[].createdAtrequiredstring (date-time)
items[].defaultClientIdstring
items[].defaultClientNamestring
items[].defaultPrioritystring
items[].defaultTypestring
items[].displayNamestring
items[].driverrequiredstring
items[].enabledrequiredboolean
items[].forwardAddressstring
items[].hideSubjectTagrequiredboolean
items[].hoststring
items[].lastErrorstring
items[].lastPolledAtstring (date-time) or null
items[].lastReceivedAtstring (date-time) or null
items[].lastSyncAtstring (date-time) or null
items[].namerequiredstring
items[].oauthClientIdstring
items[].oauthClientSecretConfiguredrequiredboolean
items[].oauthRefreshTokenConfiguredrequiredboolean
items[].oauthTenantIdstring
items[].outboundDriverrequiredstring
items[].outboundPathrequiredstring
items[].passwordConfiguredrequiredboolean
items[].pollIntervalSecondsrequiredinteger
items[].portinteger
items[].publicIdrequiredstring
items[].queueIdstring
items[].scopeVerifiedrequiredboolean
items[].serviceAccountConfiguredrequiredboolean
items[].smtpHoststring
items[].smtpPasswordConfiguredrequiredboolean
items[].smtpPortinteger
items[].smtpUseTlsrequiredboolean
items[].smtpUsernamestring
items[].statusrequiredstring
items[].statusChangedAtstring (date-time) or null
items[].statusReasonstring
items[].suspendedCountrequiredinteger
items[].tokenExpiresAtstring (date-time) or null
items[].trustAllSendersboolean or null
items[].unknownSendersrequiredstring
items[].updatedAtrequiredstring (date-time)
items[].useTlsrequiredboolean
items[].usernamestring
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/mailboxes?dir=asc&page=0&pageSize=0&q=<q>&sort=address&state=<state>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTmailbox:manageshared facehosteditmspremote

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

Source: [object Object]

createMailbox adds a mailbox.

A forward mailbox gets its forwarding address from Core first: the row cannot exist without one (CK_MailboxConfig_ForwardSlug).

Required, sent as application/json.

FieldTypeDescription
addressstring or null
authModestring or null
defaultClientIdstring or null
defaultPrioritystring or null
defaultTypestring or null
displayNamestring or null
driverstring or null
enabledboolean or null
hideSubjectTagboolean or null
hoststring or null
namestring or null
oauthClientIdstring or null
oauthClientSecretstring or null
oauthRefreshTokenstring or null
oauthTenantIdstring or null
outboundDriverstring or null
passwordstring or null
pollIntervalSecondsinteger or null
portinteger or null
queueIdstring or null
serviceAccountJsonstring or null
smtpHoststring or null
smtpPasswordstring or null
smtpPortinteger or null
smtpUseTlsboolean or null
smtpUsernamestring or null
unknownSendersstring or null
useTlsboolean or null
usernamestring or null
StatusBodyDescription
201application/json, MailboxViewCreated.
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 mailbox: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.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

201 response body

FieldTypeDescription
addressrequiredstring
authModerequiredstring
canaryLastSeenAtstring (date-time) or null
canaryLastSentAtstring (date-time) or null
connectedAccountstring
createdAtrequiredstring (date-time)
defaultClientIdstring
defaultClientNamestring
defaultPrioritystring
defaultTypestring
displayNamestring
driverrequiredstring
enabledrequiredboolean
forwardAddressstring
hideSubjectTagrequiredboolean
hoststring
lastErrorstring
lastPolledAtstring (date-time) or null
lastReceivedAtstring (date-time) or null
lastSyncAtstring (date-time) or null
namerequiredstring
oauthClientIdstring
oauthClientSecretConfiguredrequiredboolean
oauthRefreshTokenConfiguredrequiredboolean
oauthTenantIdstring
outboundDriverrequiredstring
outboundPathrequiredstring
passwordConfiguredrequiredboolean
pollIntervalSecondsrequiredinteger
portinteger
publicIdrequiredstring
queueIdstring
scopeVerifiedrequiredboolean
serviceAccountConfiguredrequiredboolean
smtpHoststring
smtpPasswordConfiguredrequiredboolean
smtpPortinteger
smtpUseTlsrequiredboolean
smtpUsernamestring
statusrequiredstring
statusChangedAtstring (date-time) or null
statusReasonstring
suspendedCountrequiredinteger
tokenExpiresAtstring (date-time) or null
trustAllSendersboolean or null
unknownSendersrequiredstring
updatedAtrequiredstring (date-time)
useTlsrequiredboolean
usernamestring
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/mailboxes' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"address": "string",
"authMode": "string",
"defaultClientId": "string",
"defaultPriority": "string",
"defaultType": "string",
"displayName": "string",
"driver": "string",
"enabled": false,
"hideSubjectTag": false,
"host": "string",
"name": "string",
"oauthClientId": "string",
"oauthClientSecret": "string",
"oauthRefreshToken": "string",
"oauthTenantId": "string",
"outboundDriver": "string",
"password": "string",
"pollIntervalSeconds": 0,
"port": 0,
"queueId": "string",
"serviceAccountJson": "string",
"smtpHost": "string",
"smtpPassword": "string",
"smtpPort": 0,
"smtpUseTls": false,
"smtpUsername": "string",
"unknownSenders": "string",
"useTls": false,
"username": "string"
}'

GETmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

getMailbox returns one mailbox, its health fields and its routing defaults.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
StatusBodyDescription
200application/json, MailboxViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox: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.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

200 response body

FieldTypeDescription
addressrequiredstring
authModerequiredstring
canaryLastSeenAtstring (date-time) or null
canaryLastSentAtstring (date-time) or null
connectedAccountstring
createdAtrequiredstring (date-time)
defaultClientIdstring
defaultClientNamestring
defaultPrioritystring
defaultTypestring
displayNamestring
driverrequiredstring
enabledrequiredboolean
forwardAddressstring
hideSubjectTagrequiredboolean
hoststring
lastErrorstring
lastPolledAtstring (date-time) or null
lastReceivedAtstring (date-time) or null
lastSyncAtstring (date-time) or null
namerequiredstring
oauthClientIdstring
oauthClientSecretConfiguredrequiredboolean
oauthRefreshTokenConfiguredrequiredboolean
oauthTenantIdstring
outboundDriverrequiredstring
outboundPathrequiredstring
passwordConfiguredrequiredboolean
pollIntervalSecondsrequiredinteger
portinteger
publicIdrequiredstring
queueIdstring
scopeVerifiedrequiredboolean
serviceAccountConfiguredrequiredboolean
smtpHoststring
smtpPasswordConfiguredrequiredboolean
smtpPortinteger
smtpUseTlsrequiredboolean
smtpUsernamestring
statusrequiredstring
statusChangedAtstring (date-time) or null
statusReasonstring
suspendedCountrequiredinteger
tokenExpiresAtstring (date-time) or null
trustAllSendersboolean or null
unknownSendersrequiredstring
updatedAtrequiredstring (date-time)
useTlsrequiredboolean
usernamestring
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/mailboxes/<mailboxID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCHmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

patchMailbox edits a mailbox.

A change that would send a stored secret somewhere new must carry that secret again (E12).

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
addressstring or null
authModestring or null
defaultClientIdstring or null
defaultPrioritystring or null
defaultTypestring or null
displayNamestring or null
driverstring or null
enabledboolean or null
hideSubjectTagboolean or null
hoststring or null
namestring or null
oauthClientIdstring or null
oauthClientSecretstring or null
oauthRefreshTokenstring or null
oauthTenantIdstring or null
outboundDriverstring or null
passwordstring or null
pollIntervalSecondsinteger or null
portinteger or null
queueIdstring or null
serviceAccountJsonstring or null
smtpHoststring or null
smtpPasswordstring or null
smtpPortinteger or null
smtpUseTlsboolean or null
smtpUsernamestring or null
unknownSendersstring or null
useTlsboolean or null
usernamestring or null
StatusBodyDescription
200application/json, MailboxViewSuccess.
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 mailbox: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.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

200 response body

FieldTypeDescription
addressrequiredstring
authModerequiredstring
canaryLastSeenAtstring (date-time) or null
canaryLastSentAtstring (date-time) or null
connectedAccountstring
createdAtrequiredstring (date-time)
defaultClientIdstring
defaultClientNamestring
defaultPrioritystring
defaultTypestring
displayNamestring
driverrequiredstring
enabledrequiredboolean
forwardAddressstring
hideSubjectTagrequiredboolean
hoststring
lastErrorstring
lastPolledAtstring (date-time) or null
lastReceivedAtstring (date-time) or null
lastSyncAtstring (date-time) or null
namerequiredstring
oauthClientIdstring
oauthClientSecretConfiguredrequiredboolean
oauthRefreshTokenConfiguredrequiredboolean
oauthTenantIdstring
outboundDriverrequiredstring
outboundPathrequiredstring
passwordConfiguredrequiredboolean
pollIntervalSecondsrequiredinteger
portinteger
publicIdrequiredstring
queueIdstring
scopeVerifiedrequiredboolean
serviceAccountConfiguredrequiredboolean
smtpHoststring
smtpPasswordConfiguredrequiredboolean
smtpPortinteger
smtpUseTlsrequiredboolean
smtpUsernamestring
statusrequiredstring
statusChangedAtstring (date-time) or null
statusReasonstring
suspendedCountrequiredinteger
tokenExpiresAtstring (date-time) or null
trustAllSendersboolean or null
unknownSendersrequiredstring
updatedAtrequiredstring (date-time)
useTlsrequiredboolean
usernamestring
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/mailboxes/<mailboxID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"address": "string",
"authMode": "string",
"defaultClientId": "string",
"defaultPriority": "string",
"defaultType": "string",
"displayName": "string",
"driver": "string",
"enabled": false,
"hideSubjectTag": false,
"host": "string",
"name": "string",
"oauthClientId": "string",
"oauthClientSecret": "string",
"oauthRefreshToken": "string",
"oauthTenantId": "string",
"outboundDriver": "string",
"password": "string",
"pollIntervalSeconds": 0,
"port": 0,
"queueId": "string",
"serviceAccountJson": "string",
"smtpHost": "string",
"smtpPassword": "string",
"smtpPort": 0,
"smtpUseTls": false,
"smtpUsername": "string",
"unknownSenders": "string",
"useTls": false,
"username": "string"
}'

DELETEmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

deleteMailbox soft deletes.

A forward mailbox’s address is retired at Core too, best effort: a failure there is logged and the delete still happens.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox: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.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.
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/mailboxes/<mailboxID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/mailboxes/{mailboxID}/connect/complete

Section titled “POST /api/v1/mailboxes/{mailboxID}/connect/complete”

POSTmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

connectComplete redeems the code Microsoft’s redirect carried back and binds the mailbox to the consented tenant.

Reconnecting this way never clears the cursor or IngestSince (E8.4): the backlog arrives through the normal fetch.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
coderequiredstring
StatusBodyDescription
200application/json, MailboxViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.
404application/problem+json, ProblemDetailsCloud mailbox connections are not available on this Depot.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsNo client store in request context.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

200 response body

FieldTypeDescription
addressrequiredstring
authModerequiredstring
canaryLastSeenAtstring (date-time) or null
canaryLastSentAtstring (date-time) or null
connectedAccountstring
createdAtrequiredstring (date-time)
defaultClientIdstring
defaultClientNamestring
defaultPrioritystring
defaultTypestring
displayNamestring
driverrequiredstring
enabledrequiredboolean
forwardAddressstring
hideSubjectTagrequiredboolean
hoststring
lastErrorstring
lastPolledAtstring (date-time) or null
lastReceivedAtstring (date-time) or null
lastSyncAtstring (date-time) or null
namerequiredstring
oauthClientIdstring
oauthClientSecretConfiguredrequiredboolean
oauthRefreshTokenConfiguredrequiredboolean
oauthTenantIdstring
outboundDriverrequiredstring
outboundPathrequiredstring
passwordConfiguredrequiredboolean
pollIntervalSecondsrequiredinteger
portinteger
publicIdrequiredstring
queueIdstring
scopeVerifiedrequiredboolean
serviceAccountConfiguredrequiredboolean
smtpHoststring
smtpPasswordConfiguredrequiredboolean
smtpPortinteger
smtpUseTlsrequiredboolean
smtpUsernamestring
statusrequiredstring
statusChangedAtstring (date-time) or null
statusReasonstring
suspendedCountrequiredinteger
tokenExpiresAtstring (date-time) or null
trustAllSendersboolean or null
unknownSendersrequiredstring
updatedAtrequiredstring (date-time)
useTlsrequiredboolean
usernamestring
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/mailboxes/<mailboxID>/connect/complete' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"code": "string"
}'

POST /api/v1/mailboxes/{mailboxID}/connect/consent

Section titled “POST /api/v1/mailboxes/{mailboxID}/connect/consent”

POSTmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

connectConsent starts Microsoft admin consent (app) or a delegated sign-in.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
moderequiredstring
returnPathrequiredstring
StatusBodyDescription
200application/json, ConsentStartSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.
404application/problem+json, ProblemDetailsCloud mailbox connections are not available on this Depot.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsNo client store in request context.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

200 response body

FieldTypeDescription
expiresAtrequiredstring (date-time)
redirectUrlrequiredstring
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/mailboxes/<mailboxID>/connect/consent' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"mode": "string",
"returnPath": "string"
}'

POST /api/v1/mailboxes/{mailboxID}/connect/forward

Section titled “POST /api/v1/mailboxes/{mailboxID}/connect/forward”

POSTmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

connectForward returns the forwarding address, minting it on the first call.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
StatusBodyDescription
200application/json, MailboxForwardViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.
404application/problem+json, ProblemDetailsCloud mailbox connections are not available on this Depot.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsNo client store in request context.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

200 response body

FieldTypeDescription
addressrequiredstring
verificationMailboxForwardVerification

MailboxForwardVerification is the code and link Gmail mails to a new forwarding address; the owner confirms forwarding with either.

verification.coderequiredstring
verification.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 POST 'https://depot.example.com/api/v1/mailboxes/<mailboxID>/connect/forward' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/mailboxes/{mailboxID}/connect/google

Section titled “GET /api/v1/mailboxes/{mailboxID}/connect/google”

GETmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

connectGoogle returns what a Google Workspace admin enters for domain-wide delegation, and the DNS proof Core needs first (R7).

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.
404application/problem+json, ProblemDetailsCloud mailbox connections are not available on this Depot.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsNo client store in request context.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.
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/mailboxes/<mailboxID>/connect/google' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/mailboxes/{mailboxID}/connect/google/oauth/complete

Section titled “POST /api/v1/mailboxes/{mailboxID}/connect/google/oauth/complete”

POSTmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

connectGoogleOAuthComplete redeems the code Core’s redirect carried back and binds the mailbox to the Google account that signed in.

Core has already refused any account but the mailbox’s; the check is repeated here because the code is all the Depot is handed. Reconnecting this way never clears the cursor or IngestSince (E8.4).

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
coderequiredstring
StatusBodyDescription
200application/json, MailboxViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.
404application/problem+json, ProblemDetailsCloud mailbox connections are not available on this Depot.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsThe request failed.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

200 response body

FieldTypeDescription
addressrequiredstring
authModerequiredstring
canaryLastSeenAtstring (date-time) or null
canaryLastSentAtstring (date-time) or null
connectedAccountstring
createdAtrequiredstring (date-time)
defaultClientIdstring
defaultClientNamestring
defaultPrioritystring
defaultTypestring
displayNamestring
driverrequiredstring
enabledrequiredboolean
forwardAddressstring
hideSubjectTagrequiredboolean
hoststring
lastErrorstring
lastPolledAtstring (date-time) or null
lastReceivedAtstring (date-time) or null
lastSyncAtstring (date-time) or null
namerequiredstring
oauthClientIdstring
oauthClientSecretConfiguredrequiredboolean
oauthRefreshTokenConfiguredrequiredboolean
oauthTenantIdstring
outboundDriverrequiredstring
outboundPathrequiredstring
passwordConfiguredrequiredboolean
pollIntervalSecondsrequiredinteger
portinteger
publicIdrequiredstring
queueIdstring
scopeVerifiedrequiredboolean
serviceAccountConfiguredrequiredboolean
smtpHoststring
smtpPasswordConfiguredrequiredboolean
smtpPortinteger
smtpUseTlsrequiredboolean
smtpUsernamestring
statusrequiredstring
statusChangedAtstring (date-time) or null
statusReasonstring
suspendedCountrequiredinteger
tokenExpiresAtstring (date-time) or null
trustAllSendersboolean or null
unknownSendersrequiredstring
updatedAtrequiredstring (date-time)
useTlsrequiredboolean
usernamestring
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/mailboxes/<mailboxID>/connect/google/oauth/complete' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"code": "string"
}'

POST /api/v1/mailboxes/{mailboxID}/connect/google/oauth/start

Section titled “POST /api/v1/mailboxes/{mailboxID}/connect/google/oauth/start”

POSTmailbox:manageshared facehosteditmspremote

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

Source: [object Object]

connectGoogleOAuthStart starts a Google sign-in for a Workspace mailbox.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
returnPathrequiredstring
StatusBodyDescription
200application/json, ConsentStartSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.
404application/problem+json, ProblemDetailsCloud mailbox connections are not available on this Depot.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
expiresAtrequiredstring (date-time)
redirectUrlrequiredstring
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/mailboxes/<mailboxID>/connect/google/oauth/start' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"returnPath": "string"
}'

POST /api/v1/mailboxes/{mailboxID}/connect/google/verify-domain

Section titled “POST /api/v1/mailboxes/{mailboxID}/connect/google/verify-domain”

POSTmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

connectGoogleVerify asks Core to look the domain’s TXT record up now.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.
404application/problem+json, ProblemDetailsCloud mailbox connections are not available on this Depot.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsNo client store in request context.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.
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/mailboxes/<mailboxID>/connect/google/verify-domain' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/mailboxes/{mailboxID}/connect/rbac-script

Section titled “GET /api/v1/mailboxes/{mailboxID}/connect/rbac-script”

GETmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

connectRBACScript returns the PowerShell that scopes the Outpost Mail app to this one mailbox (R6).

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.
404application/problem+json, ProblemDetailsCloud mailbox connections are not available on this Depot.
409application/problem+json, ProblemDetailsThe request conflicts with the current state.
500application/problem+json, ProblemDetailsNo client store in request context.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.
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/mailboxes/<mailboxID>/connect/rbac-script' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

mailboxHealth is the health card: status, timings, the suspended backlog and the mailbox’s open alerts.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
StatusBodyDescription
200application/json, objectSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox: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.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

200 response body

FieldTypeDescription
alertsrequiredarray of MailboxAlertView
alerts[].kindrequiredstring
alerts[].severityrequiredstring
alerts[].sincerequiredstring (date-time)
canaryLastSeenAtstring (date-time) or null
canaryLastSentAtstring (date-time) or null
consecutiveFailuresrequiredinteger
lastReceivedAtstring (date-time) or null
lastSyncAtstring (date-time) or null
statusrequiredstring
statusChangedAtstring (date-time) or null
statusReasonrequiredstring
suspendedCountrequiredinteger
tokenExpiresAtstring (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 GET 'https://depot.example.com/api/v1/mailboxes/<mailboxID>/health' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/mailboxes/{mailboxID}/sender-rules

Section titled “GET /api/v1/mailboxes/{mailboxID}/sender-rules”

GETmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

listSenderRules returns a mailbox’s allow and block entries, oldest first.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox: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.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.
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/mailboxes/<mailboxID>/sender-rules' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/mailboxes/{mailboxID}/sender-rules

Section titled “POST /api/v1/mailboxes/{mailboxID}/sender-rules”

POSTmailbox:manageshared facehosteditmspremote

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

Source: [object Object]

createSenderRule allows or blocks one address or domain on a mailbox.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
kindrequiredstring
matchTyperequiredstring
valuerequiredstring
StatusBodyDescription
201application/json, SenderRuleViewCreated.
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 mailbox: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.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

201 response body

FieldTypeDescription
createdAtrequiredstring (date-time)
idrequiredstring
kindrequiredstring
matchTyperequiredstring
valuerequiredstring
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/mailboxes/<mailboxID>/sender-rules' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"kind": "string",
"matchType": "string",
"value": "string"
}'

DELETE /api/v1/mailboxes/{mailboxID}/sender-rules/{ruleID}

Section titled “DELETE /api/v1/mailboxes/{mailboxID}/sender-rules/{ruleID}”

DELETEmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

deleteSenderRule removes one rule.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
ruleIDpathstringYesA uuid.
StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox: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.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.
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/mailboxes/<mailboxID>/sender-rules/<ruleID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

testMailbox runs the connection test against the SAVED configuration.

Against the saved row and not against a request body, deliberately: a probe that took credentials inline would be an outbound connection to any host the caller names with any credentials they supply, which is a request forgery primitive dressed as a settings button.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
sendTestboolean or null
StatusBodyDescription
200application/json, ProbeResultSuccess.
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 mailbox: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, ProblemDetailsMail is not configured on this Depot, so a mailbox cannot be tested.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

200 response body

FieldTypeDescription
okrequiredboolean
stepsrequiredarray of ProbeStep
steps[].detailstring
steps[].messageKeyrequiredstring
steps[].resultrequiredstring
steps[].steprequiredstring
testTokenstring
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/mailboxes/<mailboxID>/test' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"sendTest": false
}'

GET /api/v1/mailboxes/{mailboxID}/test/{token}

Section titled “GET /api/v1/mailboxes/{mailboxID}/test/{token}”

GETmailbox:manageshared facehosteditmspremoteIdempotentToken in the path

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

Source: [object Object]

testReceipt answers whether the send test’s message has arrived back.

NameInTypeRequiredDescription
mailboxIDpathstringYesA uuid.
tokenpathstringYes
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox: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, ProblemDetailsMail is not configured on this Depot.
507application/problem+json, ProblemDetailsThe storage profile for this client is over its configured quota. Raise the quota or remove attachments.

200 response body

FieldTypeDescription
receivedrequiredboolean
receivedAtstring (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 GET 'https://depot.example.com/api/v1/mailboxes/<mailboxID>/test/<token>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETmailbox:manageshared facehosteditmspremoteIdempotent

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

Source: [object Object]

detectMailbox works out how an address can be connected.

NameInTypeRequiredDescription
addressquerystringNo
StatusBodyDescription
200application/json, DetectViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold mailbox:manage.

200 response body

FieldTypeDescription
consumerrequiredboolean
gatewayrequiredstring
guidancerequiredarray of string
methodsrequiredarray of DetectMethodView
methods[].authModerequiredstring
methods[].availablerequiredboolean
methods[].driverrequiredstring
methods[].guidancerequiredarray of string
methods[].recommendedrequiredboolean
methods[].unavailableReasonrequiredstring
providerrequiredstring
tenantFoundrequiredboolean
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/mailboxes/detect?address=<address>' \
-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.