Depot emailproviders
Registers the outgoing-mail 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.
GET /api/v1/organization/email/providers
Section titled “GET /api/v1/organization/email/providers”GETmailbox:manageshared facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
List email providers
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | No | One-based page number. Defaults to 1. |
pageSize | query | integer | No | Rows per page, 1 to 200. Defaults to 50. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, PagedResultEmailProviderView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
500 | application/problem+json, ProblemDetails | Could not list email providers. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
200 response body
| Field | Type | Description |
|---|---|---|
itemsrequired | array of EmailProviderView | |
items[].configurationSet | string | |
items[].createdAtrequired | string (date-time) | |
items[].credentialsConfiguredrequired | boolean | |
items[].domain | string | |
items[].driverrequired | string | |
items[].encryption | string | |
items[].fromAddress | string | |
items[].fromName | string | |
items[].host | string | |
items[].ipPool | string | |
items[].isDefaultrequired | boolean | |
items[].lastProbeAt | string (date-time) or null | |
items[].lastProbeError | string | |
items[].messageStream | string | |
items[].namerequired | string | |
items[].nextTestInSecondsrequired | integer | |
items[].port | integer | |
items[].publicIdrequired | string | |
items[].region | string | |
items[].replyTo | string | |
items[].returnPath | string | |
items[].sandboxModerequired | boolean | |
items[].statusrequired | string | |
items[].testsRemainingTodayrequired | integer | |
items[].trackClicksrequired | boolean | |
items[].trackOpensrequired | boolean | |
items[].updatedAtrequired | string (date-time) | |
items[].username | string | |
pagerequired | integer | |
pageSizerequired | integer | |
totalrequired | integer |
Request samples
Section titled “Request samples”# 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/organization/email/providers?page=0&pageSize=0' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -b 'outpost_console=<console-session>'# 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.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$response = Invoke-RestMethod ` -Method Get ` -Uri 'https://depot.example.com/api/v1/organization/email/providers?page=0&pageSize=0' ` -Headers $headers
$response | ConvertTo-Json -Depth 10# 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.
import requests
url = "https://depot.example.com/api/v1/organization/email/providers"params = { "page": "0", "pageSize": "0",}headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json",}cookies = { "outpost_console": "<console-session>",}
response = requests.get(url, params=params, headers=headers, cookies=cookies, timeout=30)response.raise_for_status()print(response.json())// 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.package main
import ( "fmt" "io" "log" "net/http")
func main() { req, err := http.NewRequest(http.MethodGet, "https://depot.example.com/api/v1/organization/email/providers?page=0&pageSize=0", nil) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// 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.// The session cookie is set by signing in. A script cannot set it itself.
const url = new URL("https://depot.example.com/api/v1/organization/email/providers");url.searchParams.set("page", "0");url.searchParams.set("pageSize", "0");
const response = await fetch(url, { method: "GET", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", }, credentials: "include",});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// 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.
using System;using System.Net.Http;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://depot.example.com/api/v1/organization/email/providers?page=0&pageSize=0");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());POST /api/v1/organization/email/providers
Section titled “POST /api/v1/organization/email/providers”POSTmailbox:manageshared facehosteditmspremoteIdempotentNot fully resolved
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
What this page does not know
- response-status
These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.
Source: [object Object]
Create email provider
Request body
Section titled “Request body”Required, sent as application/json.
| Field | Type | Description |
|---|---|---|
apiKey | string or null | |
apiSecret | string or null | |
configurationSet | string or null | |
domain | string or null | |
driver | string or null | |
encryption | string or null | |
fromAddress | string or null | |
fromName | string or null | |
host | string or null | |
ipPool | string or null | |
messageStream | string or null | |
name | string or null | |
password | string or null | |
port | integer or null | |
region | string or null | |
replyTo | string or null | |
returnPath | string or null | |
sandboxMode | boolean or null | |
status | string or null | |
trackClicks | boolean or null | |
trackOpens | boolean or null | |
username | string or null |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, EmailProviderView | Success. |
400 | application/problem+json, ProblemDetails | The request body is not valid JSON. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
404 | application/problem+json, ProblemDetails | No resource matches. |
409 | application/problem+json, ProblemDetails | The request conflicts with the current state. |
500 | application/problem+json, ProblemDetails | Could not read the test-send quota. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
200 response body
| Field | Type | Description |
|---|---|---|
configurationSet | string | |
createdAtrequired | string (date-time) | |
credentialsConfiguredrequired | boolean | |
domain | string | |
driverrequired | string | |
encryption | string | |
fromAddress | string | |
fromName | string | |
host | string | |
ipPool | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
messageStream | string | |
namerequired | string | |
nextTestInSecondsrequired | integer | |
port | integer | |
publicIdrequired | string | |
region | string | |
replyTo | string | |
returnPath | string | |
sandboxModerequired | boolean | |
statusrequired | string | |
testsRemainingTodayrequired | integer | |
trackClicksrequired | boolean | |
trackOpensrequired | boolean | |
updatedAtrequired | string (date-time) | |
username | string |
Request samples
Section titled “Request samples”# 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/organization/email/providers' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -b 'outpost_console=<console-session>' \ --data '{ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string"}'# 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.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Content-Type' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$body = @'{ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string"}'@
$response = Invoke-RestMethod ` -Method Post ` -Uri 'https://depot.example.com/api/v1/organization/email/providers' ` -Headers $headers ` -ContentType 'application/json' ` -Body $body
$response | ConvertTo-Json -Depth 10# 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.
import requests
url = "https://depot.example.com/api/v1/organization/email/providers"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json",}cookies = { "outpost_console": "<console-session>",}payload = { "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": False, "status": "string", "trackClicks": False, "trackOpens": False, "username": "string",}
response = requests.post(url, headers=headers, cookies=cookies, json=payload, timeout=30)response.raise_for_status()print(response.json())// 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.package main
import ( "bytes" "fmt" "io" "log" "net/http")
func main() { body := []byte(`{ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string"}`)
req, err := http.NewRequest(http.MethodPost, "https://depot.example.com/api/v1/organization/email/providers", bytes.NewReader(body)) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.Header.Set("Content-Type", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// 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.// The session cookie is set by signing in. A script cannot set it itself.
const url = "https://depot.example.com/api/v1/organization/email/providers";
const response = await fetch(url, { method: "POST", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json", }, credentials: "include", body: JSON.stringify({ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string" }),});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// 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.
using System;using System.Net.Http;using System.Text;
using var client = new HttpClient();
const string body = """{ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string"}""";
var request = new HttpRequestMessage(HttpMethod.Post, "https://depot.example.com/api/v1/organization/email/providers");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");request.Content = new StringContent(body, Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());GET /api/v1/organization/email/providers/{providerID}
Section titled “GET /api/v1/organization/email/providers/{providerID}”GETmailbox:manageshared facehosteditmspremoteIdempotentNot fully resolved
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
What this page does not know
- response-status
These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.
Source: [object Object]
Get email provider
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
providerID | path | string | Yes | A uuid. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, EmailProviderView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
404 | application/problem+json, ProblemDetails | No resource matches that id. |
409 | application/problem+json, ProblemDetails | The request conflicts with the current state. |
500 | application/problem+json, ProblemDetails | Could not read the test-send quota. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
200 response body
| Field | Type | Description |
|---|---|---|
configurationSet | string | |
createdAtrequired | string (date-time) | |
credentialsConfiguredrequired | boolean | |
domain | string | |
driverrequired | string | |
encryption | string | |
fromAddress | string | |
fromName | string | |
host | string | |
ipPool | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
messageStream | string | |
namerequired | string | |
nextTestInSecondsrequired | integer | |
port | integer | |
publicIdrequired | string | |
region | string | |
replyTo | string | |
returnPath | string | |
sandboxModerequired | boolean | |
statusrequired | string | |
testsRemainingTodayrequired | integer | |
trackClicksrequired | boolean | |
trackOpensrequired | boolean | |
updatedAtrequired | string (date-time) | |
username | string |
Request samples
Section titled “Request samples”# 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/organization/email/providers/<providerID>' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -b 'outpost_console=<console-session>'# 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.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$response = Invoke-RestMethod ` -Method Get ` -Uri 'https://depot.example.com/api/v1/organization/email/providers/<providerID>' ` -Headers $headers
$response | ConvertTo-Json -Depth 10# 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.
import requests
url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json",}cookies = { "outpost_console": "<console-session>",}
response = requests.get(url, headers=headers, cookies=cookies, timeout=30)response.raise_for_status()print(response.json())// 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.package main
import ( "fmt" "io" "log" "net/http")
func main() { req, err := http.NewRequest(http.MethodGet, "https://depot.example.com/api/v1/organization/email/providers/<providerID>", nil) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// 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.// The session cookie is set by signing in. A script cannot set it itself.
const url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>";
const response = await fetch(url, { method: "GET", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", }, credentials: "include",});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// 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.
using System;using System.Net.Http;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://depot.example.com/api/v1/organization/email/providers/<providerID>");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());PATCH /api/v1/organization/email/providers/{providerID}
Section titled “PATCH /api/v1/organization/email/providers/{providerID}”PATCHmailbox:manageshared facehosteditmspremoteIdempotentNot fully resolved
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
What this page does not know
- response-status
These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.
Source: [object Object]
Patch email provider
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
providerID | path | string | Yes | A uuid. |
Request body
Section titled “Request body”Required, sent as application/json.
| Field | Type | Description |
|---|---|---|
apiKey | string or null | |
apiSecret | string or null | |
configurationSet | string or null | |
domain | string or null | |
driver | string or null | |
encryption | string or null | |
fromAddress | string or null | |
fromName | string or null | |
host | string or null | |
ipPool | string or null | |
messageStream | string or null | |
name | string or null | |
password | string or null | |
port | integer or null | |
region | string or null | |
replyTo | string or null | |
returnPath | string or null | |
sandboxMode | boolean or null | |
status | string or null | |
trackClicks | boolean or null | |
trackOpens | boolean or null | |
username | string or null |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, EmailProviderView | Success. |
400 | application/problem+json, ProblemDetails | The request body is not valid JSON. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
404 | application/problem+json, ProblemDetails | No resource matches that id. |
409 | application/problem+json, ProblemDetails | The request conflicts with the current state. |
500 | application/problem+json, ProblemDetails | Could not read the test-send quota. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
200 response body
| Field | Type | Description |
|---|---|---|
configurationSet | string | |
createdAtrequired | string (date-time) | |
credentialsConfiguredrequired | boolean | |
domain | string | |
driverrequired | string | |
encryption | string | |
fromAddress | string | |
fromName | string | |
host | string | |
ipPool | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
messageStream | string | |
namerequired | string | |
nextTestInSecondsrequired | integer | |
port | integer | |
publicIdrequired | string | |
region | string | |
replyTo | string | |
returnPath | string | |
sandboxModerequired | boolean | |
statusrequired | string | |
testsRemainingTodayrequired | integer | |
trackClicksrequired | boolean | |
trackOpensrequired | boolean | |
updatedAtrequired | string (date-time) | |
username | string |
Request samples
Section titled “Request samples”# 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/organization/email/providers/<providerID>' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -b 'outpost_console=<console-session>' \ --data '{ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string"}'# 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.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Content-Type' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$body = @'{ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string"}'@
$response = Invoke-RestMethod ` -Method Patch ` -Uri 'https://depot.example.com/api/v1/organization/email/providers/<providerID>' ` -Headers $headers ` -ContentType 'application/json' ` -Body $body
$response | ConvertTo-Json -Depth 10# 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.
import requests
url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json",}cookies = { "outpost_console": "<console-session>",}payload = { "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": False, "status": "string", "trackClicks": False, "trackOpens": False, "username": "string",}
response = requests.patch(url, headers=headers, cookies=cookies, json=payload, timeout=30)response.raise_for_status()print(response.json())// 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.package main
import ( "bytes" "fmt" "io" "log" "net/http")
func main() { body := []byte(`{ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string"}`)
req, err := http.NewRequest(http.MethodPatch, "https://depot.example.com/api/v1/organization/email/providers/<providerID>", bytes.NewReader(body)) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.Header.Set("Content-Type", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// 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.// The session cookie is set by signing in. A script cannot set it itself.
const url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>";
const response = await fetch(url, { method: "PATCH", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json", }, credentials: "include", body: JSON.stringify({ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string" }),});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// 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.
using System;using System.Net.Http;using System.Text;
using var client = new HttpClient();
const string body = """{ "apiKey": "string", "apiSecret": "string", "configurationSet": "string", "domain": "string", "driver": "string", "encryption": "string", "fromAddress": "string", "fromName": "string", "host": "string", "ipPool": "string", "messageStream": "string", "name": "string", "password": "string", "port": 0, "region": "string", "replyTo": "string", "returnPath": "string", "sandboxMode": false, "status": "string", "trackClicks": false, "trackOpens": false, "username": "string"}""";
var request = new HttpRequestMessage(HttpMethod.Patch, "https://depot.example.com/api/v1/organization/email/providers/<providerID>");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");request.Content = new StringContent(body, Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());DELETE /api/v1/organization/email/providers/{providerID}
Section titled “DELETE /api/v1/organization/email/providers/{providerID}”DELETEmailbox:manageshared facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Delete email provider
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
providerID | path | string | Yes | A uuid. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
204 | None | Success, with no body. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
404 | application/problem+json, ProblemDetails | No resource matches that id. |
409 | application/problem+json, ProblemDetails | Outpost Cloud Email is a built-in provider and cannot be deleted. |
500 | application/problem+json, ProblemDetails | Could not read the email providers. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
Request samples
Section titled “Request samples”# 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/organization/email/providers/<providerID>' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -b 'outpost_console=<console-session>'# 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.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$response = Invoke-RestMethod ` -Method Delete ` -Uri 'https://depot.example.com/api/v1/organization/email/providers/<providerID>' ` -Headers $headers
$response | ConvertTo-Json -Depth 10# 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.
import requests
url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json",}cookies = { "outpost_console": "<console-session>",}
response = requests.delete(url, headers=headers, cookies=cookies, timeout=30)response.raise_for_status()print(response.json())// 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.package main
import ( "fmt" "io" "log" "net/http")
func main() { req, err := http.NewRequest(http.MethodDelete, "https://depot.example.com/api/v1/organization/email/providers/<providerID>", nil) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// 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.// The session cookie is set by signing in. A script cannot set it itself.
const url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>";
const response = await fetch(url, { method: "DELETE", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", }, credentials: "include",});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// 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.
using System;using System.Net.Http;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Delete, "https://depot.example.com/api/v1/organization/email/providers/<providerID>");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());POST /api/v1/organization/email/providers/{providerID}/default
Section titled “POST /api/v1/organization/email/providers/{providerID}/default”POSTmailbox:manageshared facehosteditmspremoteIdempotentNot fully resolved
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
What this page does not know
- response-status
These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.
Source: [object Object]
Set default email provider
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
providerID | path | string | Yes | A uuid. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, EmailProviderView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
404 | application/problem+json, ProblemDetails | No resource matches that id. |
409 | application/problem+json, ProblemDetails | This provider is disabled. Enable it before making it the active one. |
500 | application/problem+json, ProblemDetails | Could not read the test-send quota. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
200 response body
| Field | Type | Description |
|---|---|---|
configurationSet | string | |
createdAtrequired | string (date-time) | |
credentialsConfiguredrequired | boolean | |
domain | string | |
driverrequired | string | |
encryption | string | |
fromAddress | string | |
fromName | string | |
host | string | |
ipPool | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
messageStream | string | |
namerequired | string | |
nextTestInSecondsrequired | integer | |
port | integer | |
publicIdrequired | string | |
region | string | |
replyTo | string | |
returnPath | string | |
sandboxModerequired | boolean | |
statusrequired | string | |
testsRemainingTodayrequired | integer | |
trackClicksrequired | boolean | |
trackOpensrequired | boolean | |
updatedAtrequired | string (date-time) | |
username | string |
Request samples
Section titled “Request samples”# 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/organization/email/providers/<providerID>/default' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -b 'outpost_console=<console-session>'# 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.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$response = Invoke-RestMethod ` -Method Post ` -Uri 'https://depot.example.com/api/v1/organization/email/providers/<providerID>/default' ` -Headers $headers
$response | ConvertTo-Json -Depth 10# 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.
import requests
url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>/default"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json",}cookies = { "outpost_console": "<console-session>",}
response = requests.post(url, headers=headers, cookies=cookies, timeout=30)response.raise_for_status()print(response.json())// 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.package main
import ( "fmt" "io" "log" "net/http")
func main() { req, err := http.NewRequest(http.MethodPost, "https://depot.example.com/api/v1/organization/email/providers/<providerID>/default", nil) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// 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.// The session cookie is set by signing in. A script cannot set it itself.
const url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>/default";
const response = await fetch(url, { method: "POST", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", }, credentials: "include",});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// 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.
using System;using System.Net.Http;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://depot.example.com/api/v1/organization/email/providers/<providerID>/default");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());POST /api/v1/organization/email/providers/{providerID}/test
Section titled “POST /api/v1/organization/email/providers/{providerID}/test”POSTmailbox:manageshared facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Test email provider
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
providerID | path | string | Yes | A uuid. |
Request body
Section titled “Request body”Required, sent as application/json.
| Field | Type | Description |
|---|---|---|
torequired | string |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, EmailProviderView | Success. |
400 | application/problem+json, ProblemDetails | The request body is not valid JSON. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
404 | application/problem+json, ProblemDetails | No resource matches that id. |
409 | application/problem+json, ProblemDetails | The request conflicts with the current state. |
429 | application/problem+json, ProblemDetails | Too many requests. |
500 | application/problem+json, ProblemDetails | Could not read the email settings. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
200 response body
| Field | Type | Description |
|---|---|---|
configurationSet | string | |
createdAtrequired | string (date-time) | |
credentialsConfiguredrequired | boolean | |
domain | string | |
driverrequired | string | |
encryption | string | |
fromAddress | string | |
fromName | string | |
host | string | |
ipPool | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
messageStream | string | |
namerequired | string | |
nextTestInSecondsrequired | integer | |
port | integer | |
publicIdrequired | string | |
region | string | |
replyTo | string | |
returnPath | string | |
sandboxModerequired | boolean | |
statusrequired | string | |
testsRemainingTodayrequired | integer | |
trackClicksrequired | boolean | |
trackOpensrequired | boolean | |
updatedAtrequired | string (date-time) | |
username | string |
Request samples
Section titled “Request samples”# 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/organization/email/providers/<providerID>/test' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -b 'outpost_console=<console-session>' \ --data '{ "to": "string"}'# 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.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Content-Type' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$body = @'{ "to": "string"}'@
$response = Invoke-RestMethod ` -Method Post ` -Uri 'https://depot.example.com/api/v1/organization/email/providers/<providerID>/test' ` -Headers $headers ` -ContentType 'application/json' ` -Body $body
$response | ConvertTo-Json -Depth 10# 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.
import requests
url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>/test"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json",}cookies = { "outpost_console": "<console-session>",}payload = { "to": "string",}
response = requests.post(url, headers=headers, cookies=cookies, json=payload, timeout=30)response.raise_for_status()print(response.json())// 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.package main
import ( "bytes" "fmt" "io" "log" "net/http")
func main() { body := []byte(`{ "to": "string"}`)
req, err := http.NewRequest(http.MethodPost, "https://depot.example.com/api/v1/organization/email/providers/<providerID>/test", bytes.NewReader(body)) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.Header.Set("Content-Type", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// 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.// The session cookie is set by signing in. A script cannot set it itself.
const url = "https://depot.example.com/api/v1/organization/email/providers/<providerID>/test";
const response = await fetch(url, { method: "POST", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json", }, credentials: "include", body: JSON.stringify({ "to": "string" }),});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// 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.
using System;using System.Net.Http;using System.Text;
using var client = new HttpClient();
const string body = """{ "to": "string"}""";
var request = new HttpRequestMessage(HttpMethod.Post, "https://depot.example.com/api/v1/organization/email/providers/<providerID>/test");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");request.Content = new StringContent(body, Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());GET /api/v1/organization/email/settings
Section titled “GET /api/v1/organization/email/settings”GETmailbox:manageshared facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Get email settings
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, EmailSettingsView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
500 | application/problem+json, ProblemDetails | Could not read the email settings. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
200 response body
| Field | Type | Description |
|---|---|---|
bimiLogoUrl | string | |
bimiRecordName | string | |
bimiRecordValue | string | |
bimiVmcUrl | string | |
customHeadersrequired | object | |
dkimAlgorithm | string | |
dkimDomain | string | |
dkimKeyConfiguredrequired | boolean | |
dkimRecordName | string | |
dkimRecordValue | string | |
dkimSelector | string | |
updatedAtrequired | string (date-time) |
Request samples
Section titled “Request samples”# 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/organization/email/settings' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -b 'outpost_console=<console-session>'# 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.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$response = Invoke-RestMethod ` -Method Get ` -Uri 'https://depot.example.com/api/v1/organization/email/settings' ` -Headers $headers
$response | ConvertTo-Json -Depth 10# 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.
import requests
url = "https://depot.example.com/api/v1/organization/email/settings"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json",}cookies = { "outpost_console": "<console-session>",}
response = requests.get(url, headers=headers, cookies=cookies, timeout=30)response.raise_for_status()print(response.json())// 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.package main
import ( "fmt" "io" "log" "net/http")
func main() { req, err := http.NewRequest(http.MethodGet, "https://depot.example.com/api/v1/organization/email/settings", nil) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// 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.// The session cookie is set by signing in. A script cannot set it itself.
const url = "https://depot.example.com/api/v1/organization/email/settings";
const response = await fetch(url, { method: "GET", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", }, credentials: "include",});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// 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.
using System;using System.Net.Http;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://depot.example.com/api/v1/organization/email/settings");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());PATCH /api/v1/organization/email/settings
Section titled “PATCH /api/v1/organization/email/settings”PATCHmailbox:manageshared facehosteditmspremote
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Patch email settings
Request body
Section titled “Request body”Required, sent as application/json.
| Field | Type | Description |
|---|---|---|
bimiLogoUrl | string or null | |
bimiVmcUrl | string or null | |
customHeadersrequired | object | |
dkimDomain | string or null | |
dkimPrivateKey | string or null | |
dkimSelector | string or null |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, EmailSettingsView | Success. |
400 | application/problem+json, ProblemDetails | The request body is not valid JSON. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
500 | application/problem+json, ProblemDetails | Could not read the email settings. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
200 response body
| Field | Type | Description |
|---|---|---|
bimiLogoUrl | string | |
bimiRecordName | string | |
bimiRecordValue | string | |
bimiVmcUrl | string | |
customHeadersrequired | object | |
dkimAlgorithm | string | |
dkimDomain | string | |
dkimKeyConfiguredrequired | boolean | |
dkimRecordName | string | |
dkimRecordValue | string | |
dkimSelector | string | |
updatedAtrequired | string (date-time) |
Request samples
Section titled “Request samples”# Sign in first. outpost_console is a session cookie, so send it with every request.curl -X PATCH 'https://depot.example.com/api/v1/organization/email/settings' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -b 'outpost_console=<console-session>' \ --data '{ "bimiLogoUrl": "string", "bimiVmcUrl": "string", "customHeaders": { "key": "string" }, "dkimDomain": "string", "dkimPrivateKey": "string", "dkimSelector": "string"}'# Sign in first. outpost_console is a session cookie, so send it with every request.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Content-Type' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$body = @'{ "bimiLogoUrl": "string", "bimiVmcUrl": "string", "customHeaders": { "key": "string" }, "dkimDomain": "string", "dkimPrivateKey": "string", "dkimSelector": "string"}'@
$response = Invoke-RestMethod ` -Method Patch ` -Uri 'https://depot.example.com/api/v1/organization/email/settings' ` -Headers $headers ` -ContentType 'application/json' ` -Body $body
$response | ConvertTo-Json -Depth 10# Sign in first. outpost_console is a session cookie, so send it with every request.
import requests
url = "https://depot.example.com/api/v1/organization/email/settings"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json",}cookies = { "outpost_console": "<console-session>",}payload = { "bimiLogoUrl": "string", "bimiVmcUrl": "string", "customHeaders": { "key": "string", }, "dkimDomain": "string", "dkimPrivateKey": "string", "dkimSelector": "string",}
response = requests.patch(url, headers=headers, cookies=cookies, json=payload, timeout=30)response.raise_for_status()print(response.json())// Sign in first. outpost_console is a session cookie, so send it with every request.package main
import ( "bytes" "fmt" "io" "log" "net/http")
func main() { body := []byte(`{ "bimiLogoUrl": "string", "bimiVmcUrl": "string", "customHeaders": { "key": "string" }, "dkimDomain": "string", "dkimPrivateKey": "string", "dkimSelector": "string"}`)
req, err := http.NewRequest(http.MethodPatch, "https://depot.example.com/api/v1/organization/email/settings", bytes.NewReader(body)) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.Header.Set("Content-Type", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// Sign in first. outpost_console is a session cookie, so send it with every request.// The session cookie is set by signing in. A script cannot set it itself.
const url = "https://depot.example.com/api/v1/organization/email/settings";
const response = await fetch(url, { method: "PATCH", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json", }, credentials: "include", body: JSON.stringify({ "bimiLogoUrl": "string", "bimiVmcUrl": "string", "customHeaders": { "key": "string" }, "dkimDomain": "string", "dkimPrivateKey": "string", "dkimSelector": "string" }),});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// Sign in first. outpost_console is a session cookie, so send it with every request.
using System;using System.Net.Http;using System.Text;
using var client = new HttpClient();
const string body = """{ "bimiLogoUrl": "string", "bimiVmcUrl": "string", "customHeaders": { "key": "string" }, "dkimDomain": "string", "dkimPrivateKey": "string", "dkimSelector": "string"}""";
var request = new HttpRequestMessage(HttpMethod.Patch, "https://depot.example.com/api/v1/organization/email/settings");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");request.Content = new StringContent(body, Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());DELETE /api/v1/organization/email/settings/dkim
Section titled “DELETE /api/v1/organization/email/settings/dkim”DELETEmailbox:manageshared facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
clearEmailDkim removes the signing key, domain and selector together.
All three, because CK_EmailSettings_Dkim refuses a partial configuration and because a selector left pointing at a key that is gone is exactly the state where mail goes out unsigned while this page says otherwise. Messages simply stop being signed, which is where an organisation that never configured DKIM already is.
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, EmailSettingsView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold mailbox:manage. |
500 | application/problem+json, ProblemDetails | Could not remove the DKIM key. |
503 | application/problem+json, ProblemDetails | This Depot has no client database for this request yet. |
200 response body
| Field | Type | Description |
|---|---|---|
bimiLogoUrl | string | |
bimiRecordName | string | |
bimiRecordValue | string | |
bimiVmcUrl | string | |
customHeadersrequired | object | |
dkimAlgorithm | string | |
dkimDomain | string | |
dkimKeyConfiguredrequired | boolean | |
dkimRecordName | string | |
dkimRecordValue | string | |
dkimSelector | string | |
updatedAtrequired | string (date-time) |
Request samples
Section titled “Request samples”# 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/organization/email/settings/dkim' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -b 'outpost_console=<console-session>'# 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.
$headers = @{ 'X-CSRF-Token' = '<csrf-token>' 'Accept' = 'application/json' 'Cookie' = 'outpost_console=<console-session>'}
$response = Invoke-RestMethod ` -Method Delete ` -Uri 'https://depot.example.com/api/v1/organization/email/settings/dkim' ` -Headers $headers
$response | ConvertTo-Json -Depth 10# 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.
import requests
url = "https://depot.example.com/api/v1/organization/email/settings/dkim"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json",}cookies = { "outpost_console": "<console-session>",}
response = requests.delete(url, headers=headers, cookies=cookies, timeout=30)response.raise_for_status()print(response.json())// 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.package main
import ( "fmt" "io" "log" "net/http")
func main() { req, err := http.NewRequest(http.MethodDelete, "https://depot.example.com/api/v1/organization/email/settings/dkim", nil) if err != nil { log.Fatal(err) }
req.Header.Set("X-CSRF-Token", "<csrf-token>") req.Header.Set("Accept", "application/json") req.AddCookie(&http.Cookie{Name: "outpost_console", Value: "<console-session>"})
resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
out, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(resp.Status, string(out))}// 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.// The session cookie is set by signing in. A script cannot set it itself.
const url = "https://depot.example.com/api/v1/organization/email/settings/dkim";
const response = await fetch(url, { method: "DELETE", headers: { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", }, credentials: "include",});
if (!response.ok) { throw new Error(`Request failed with status ${response.status}`);}
const data = await response.json();console.log(data);// 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.
using System;using System.Net.Http;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Delete, "https://depot.example.com/api/v1/organization/email/settings/dkim");request.Headers.TryAddWithoutValidation("X-CSRF-Token", "<csrf-token>");request.Headers.TryAddWithoutValidation("Accept", "application/json");request.Headers.TryAddWithoutValidation("Cookie", "outpost_console=<console-session>");
var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();Console.WriteLine(await response.Content.ReadAsStringAsync());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.