Depot storageprofiles
Registers the MSP-level fallback profile routes on the CONTROL-PLANE 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.
GET /api/v1/msp/storage-profiles
Section titled “GET /api/v1/msp/storage-profiles”GETstorage:managemsp facemspIdempotent
Source: [object Object]
List msp storage profiles
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, PagedResultStorageProfileView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold storage:manage. |
500 | application/problem+json, ProblemDetails | Could not list storage profiles. |
200 response body
| Field | Type | Description |
|---|---|---|
itemsrequired | array of StorageProfileView | |
items[].bucket | string | |
items[].createdAtrequired | string (date-time) | |
items[].credentialPublicId | string | |
items[].credentialsConfiguredrequired | boolean | |
items[].driverrequired | string | |
items[].encryptAtRestrequired | boolean | |
items[].endpoint | string | |
items[].isDefaultrequired | boolean | |
items[].lastProbeAt | string (date-time) or null | |
items[].lastProbeError | string | |
items[].localRoot | string | |
items[].managedrequired | boolean | |
items[].namerequired | string | |
items[].prefix | string | |
items[].provider | string | |
items[].publicIdrequired | string | |
items[].quotaBytes | integer or null | int64. |
items[].region | string | |
items[].statusrequired | string | |
items[].uncPath | string | |
items[].updatedAtrequired | string (date-time) | |
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/msp/storage-profiles?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/msp/storage-profiles?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/msp/storage-profiles"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/msp/storage-profiles?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/msp/storage-profiles");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/msp/storage-profiles?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/msp/storage-profiles
Section titled “POST /api/v1/msp/storage-profiles”POSTstorage:managemsp facemsp
Source: [object Object]
Create msp storage profile
Request body
Section titled “Request body”Required, sent as application/json.
| Field | Type | Description |
|---|---|---|
accessKeyId | string or null | |
bucket | string or null | |
credentialPublicId | string or null | |
driver | string or null | |
encryptAtRest | boolean or null | |
endpoint | string or null | |
inlineCredential | InlineShareCredential | inlineShareCredential is a share credential typed into the storage form rather than picked from the vault. |
inlineCredential.namerequired | string | |
inlineCredential.secretrequired | string | |
inlineCredential.usernamerequired | string | |
isDefault | boolean or null | |
localRoot | string or null | |
managed | boolean or null | |
name | string or null | |
provider | string or null | |
quotaBytes | integer or null | int64. |
region | string or null | |
secretAccessKey | string or null | |
status | string or null | |
uncPath | string or null |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
201 | application/json, StorageProfileView | Created. |
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 | Saving a new credential to the vault needs the vault:manage permission. Pick a saved credential instead. |
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 | The request failed. |
503 | application/problem+json, ProblemDetails | This Depot has no vault to keep the share credential in yet. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
201 response body
| Field | Type | Description |
|---|---|---|
bucket | string | |
createdAtrequired | string (date-time) | |
credentialPublicId | string | |
credentialsConfiguredrequired | boolean | |
driverrequired | string | |
encryptAtRestrequired | boolean | |
endpoint | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
localRoot | string | |
managedrequired | boolean | |
namerequired | string | |
prefix | string | |
provider | string | |
publicIdrequired | string | |
quotaBytes | integer or null | int64. |
region | string | |
statusrequired | string | |
uncPath | 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 POST 'https://depot.example.com/api/v1/msp/storage-profiles' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -b 'outpost_console=<console-session>' \ --data '{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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 = @'{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}'@
$response = Invoke-RestMethod ` -Method Post ` -Uri 'https://depot.example.com/api/v1/msp/storage-profiles' ` -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/msp/storage-profiles"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json",}cookies = { "outpost_console": "<console-session>",}payload = { "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": False, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string", }, "isDefault": False, "localRoot": "string", "managed": False, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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.package main
import ( "bytes" "fmt" "io" "log" "net/http")
func main() { body := []byte(`{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}`)
req, err := http.NewRequest(http.MethodPost, "https://depot.example.com/api/v1/msp/storage-profiles", 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/msp/storage-profiles";
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({ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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 = """{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}""";
var request = new HttpRequestMessage(HttpMethod.Post, "https://depot.example.com/api/v1/msp/storage-profiles");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/msp/storage-profiles/{profileID}
Section titled “GET /api/v1/msp/storage-profiles/{profileID}”GETstorage:managemsp facemspIdempotent
Source: [object Object]
Get msp storage profile
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | path | string | Yes | A uuid. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, StorageProfileView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold storage: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 | The request failed. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
200 response body
| Field | Type | Description |
|---|---|---|
bucket | string | |
createdAtrequired | string (date-time) | |
credentialPublicId | string | |
credentialsConfiguredrequired | boolean | |
driverrequired | string | |
encryptAtRestrequired | boolean | |
endpoint | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
localRoot | string | |
managedrequired | boolean | |
namerequired | string | |
prefix | string | |
provider | string | |
publicIdrequired | string | |
quotaBytes | integer or null | int64. |
region | string | |
statusrequired | string | |
uncPath | 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/msp/storage-profiles/<profileID>' \ -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/msp/storage-profiles/<profileID>' ` -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/msp/storage-profiles/<profileID>"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/msp/storage-profiles/<profileID>", 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/msp/storage-profiles/<profileID>";
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/msp/storage-profiles/<profileID>");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/msp/storage-profiles/{profileID}
Section titled “PATCH /api/v1/msp/storage-profiles/{profileID}”PATCHstorage:managemsp facemspIdempotent
Source: [object Object]
Patch msp storage profile
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | path | string | Yes | A uuid. |
Request body
Section titled “Request body”Required, sent as application/json.
| Field | Type | Description |
|---|---|---|
accessKeyId | string or null | |
bucket | string or null | |
credentialPublicId | string or null | |
driver | string or null | |
encryptAtRest | boolean or null | |
endpoint | string or null | |
inlineCredential | InlineShareCredential | inlineShareCredential is a share credential typed into the storage form rather than picked from the vault. |
inlineCredential.namerequired | string | |
inlineCredential.secretrequired | string | |
inlineCredential.usernamerequired | string | |
isDefault | boolean or null | |
localRoot | string or null | |
managed | boolean or null | |
name | string or null | |
provider | string or null | |
quotaBytes | integer or null | int64. |
region | string or null | |
secretAccessKey | string or null | |
status | string or null | |
uncPath | string or null |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, StorageProfileView | 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 | Saving a new credential to the vault needs the vault:manage permission. Pick a saved credential instead. |
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 | The request failed. |
503 | application/problem+json, ProblemDetails | This Depot has no vault to keep the share credential in yet. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
200 response body
| Field | Type | Description |
|---|---|---|
bucket | string | |
createdAtrequired | string (date-time) | |
credentialPublicId | string | |
credentialsConfiguredrequired | boolean | |
driverrequired | string | |
encryptAtRestrequired | boolean | |
endpoint | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
localRoot | string | |
managedrequired | boolean | |
namerequired | string | |
prefix | string | |
provider | string | |
publicIdrequired | string | |
quotaBytes | integer or null | int64. |
region | string | |
statusrequired | string | |
uncPath | 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 PATCH 'https://depot.example.com/api/v1/msp/storage-profiles/<profileID>' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -b 'outpost_console=<console-session>' \ --data '{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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 = @'{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}'@
$response = Invoke-RestMethod ` -Method Patch ` -Uri 'https://depot.example.com/api/v1/msp/storage-profiles/<profileID>' ` -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/msp/storage-profiles/<profileID>"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json",}cookies = { "outpost_console": "<console-session>",}payload = { "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": False, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string", }, "isDefault": False, "localRoot": "string", "managed": False, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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(`{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}`)
req, err := http.NewRequest(http.MethodPatch, "https://depot.example.com/api/v1/msp/storage-profiles/<profileID>", 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/msp/storage-profiles/<profileID>";
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({ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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 = """{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}""";
var request = new HttpRequestMessage(HttpMethod.Patch, "https://depot.example.com/api/v1/msp/storage-profiles/<profileID>");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/msp/storage-profiles/{profileID}
Section titled “DELETE /api/v1/msp/storage-profiles/{profileID}”DELETEstorage:managemsp facemspIdempotent
Source: [object Object]
Delete msp storage profile
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | 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 storage:manage. |
404 | application/problem+json, ProblemDetails | No resource matches that id. |
409 | application/problem+json, ProblemDetails | Outpost Cloud Storage is a built-in destination and cannot be deleted. Set a different default to stop using it. |
500 | application/problem+json, ProblemDetails | The request failed. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
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/msp/storage-profiles/<profileID>' \ -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/msp/storage-profiles/<profileID>' ` -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/msp/storage-profiles/<profileID>"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/msp/storage-profiles/<profileID>", 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/msp/storage-profiles/<profileID>";
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/msp/storage-profiles/<profileID>");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());GET /api/v1/msp/storage-profiles/{profileID}/breakdown
Section titled “GET /api/v1/msp/storage-profiles/{profileID}/breakdown”GETstorage:managemsp facemspIdempotent
Source: [object Object]
getMspStorageBreakdown sums the per-client breakdowns across every client database, because the MSP fallback profile serves all of them at once.
A client whose database cannot be opened is skipped and COUNTED, never silently omitted: sweeper-style resilience, accountant-style honesty.
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | path | string | Yes | A uuid. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, StorageBreakdownView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold storage: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 list clients. |
503 | application/problem+json, ProblemDetails | Storage breakdown is not available on this Depot. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
200 response body
| Field | Type | Description |
|---|---|---|
categoriesrequired | array of StorageCategoryView | |
categories[].categoryrequired | string | |
categories[].objectsrequired | integer | int64. |
categories[].storedBytesrequired | integer | int64. |
clientsScanned | integer | |
clientsUnavailable | integer | |
profileIdrequired | string | |
totalObjectsrequired | integer | int64. |
totalStoredBytesrequired | integer | int64. |
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/msp/storage-profiles/<profileID>/breakdown' \ -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/msp/storage-profiles/<profileID>/breakdown' ` -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/msp/storage-profiles/<profileID>/breakdown"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/msp/storage-profiles/<profileID>/breakdown", 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/msp/storage-profiles/<profileID>/breakdown";
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/msp/storage-profiles/<profileID>/breakdown");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/msp/storage-profiles/{profileID}/probe
Section titled “POST /api/v1/msp/storage-profiles/{profileID}/probe”POSTstorage:managemsp facemspIdempotent
Source: [object Object]
Probe msp storage profile
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | path | string | Yes | A uuid. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, StorageProfileView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold storage:manage. |
404 | application/problem+json, ProblemDetails | No resource matches that id. |
409 | application/problem+json, ProblemDetails | The request conflicts with the current state. |
422 | application/problem+json, ProblemDetails | A network share is written by the endpoint’s agent, not by this Depot, so it cannot be tested from here. Its first backup reports whether the share is reachable. |
500 | application/problem+json, ProblemDetails | Could not record the probe result. |
503 | application/problem+json, ProblemDetails | Storage probing is not available on this Depot. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
200 response body
| Field | Type | Description |
|---|---|---|
bucket | string | |
createdAtrequired | string (date-time) | |
credentialPublicId | string | |
credentialsConfiguredrequired | boolean | |
driverrequired | string | |
encryptAtRestrequired | boolean | |
endpoint | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
localRoot | string | |
managedrequired | boolean | |
namerequired | string | |
prefix | string | |
provider | string | |
publicIdrequired | string | |
quotaBytes | integer or null | int64. |
region | string | |
statusrequired | string | |
uncPath | 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 POST 'https://depot.example.com/api/v1/msp/storage-profiles/<profileID>/probe' \ -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/msp/storage-profiles/<profileID>/probe' ` -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/msp/storage-profiles/<profileID>/probe"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/msp/storage-profiles/<profileID>/probe", 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/msp/storage-profiles/<profileID>/probe";
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/msp/storage-profiles/<profileID>/probe");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());GET /api/v1/storage/profiles
Section titled “GET /api/v1/storage/profiles”GETstorage:managetenant facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
List storage profiles
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, PagedResultStorageProfileView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold storage:manage. |
500 | application/problem+json, ProblemDetails | No client store in request context. |
200 response body
| Field | Type | Description |
|---|---|---|
itemsrequired | array of StorageProfileView | |
items[].bucket | string | |
items[].createdAtrequired | string (date-time) | |
items[].credentialPublicId | string | |
items[].credentialsConfiguredrequired | boolean | |
items[].driverrequired | string | |
items[].encryptAtRestrequired | boolean | |
items[].endpoint | string | |
items[].isDefaultrequired | boolean | |
items[].lastProbeAt | string (date-time) or null | |
items[].lastProbeError | string | |
items[].localRoot | string | |
items[].managedrequired | boolean | |
items[].namerequired | string | |
items[].prefix | string | |
items[].provider | string | |
items[].publicIdrequired | string | |
items[].quotaBytes | integer or null | int64. |
items[].region | string | |
items[].statusrequired | string | |
items[].uncPath | string | |
items[].updatedAtrequired | string (date-time) | |
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/storage/profiles?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/storage/profiles?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/storage/profiles"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/storage/profiles?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/storage/profiles");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/storage/profiles?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/storage/profiles
Section titled “POST /api/v1/storage/profiles”POSTstorage:managetenant facehosteditmspremote
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Create storage profile
Request body
Section titled “Request body”Required, sent as application/json.
| Field | Type | Description |
|---|---|---|
accessKeyId | string or null | |
bucket | string or null | |
credentialPublicId | string or null | |
driver | string or null | |
encryptAtRest | boolean or null | |
endpoint | string or null | |
inlineCredential | InlineShareCredential | inlineShareCredential is a share credential typed into the storage form rather than picked from the vault. |
inlineCredential.namerequired | string | |
inlineCredential.secretrequired | string | |
inlineCredential.usernamerequired | string | |
isDefault | boolean or null | |
localRoot | string or null | |
managed | boolean or null | |
name | string or null | |
provider | string or null | |
quotaBytes | integer or null | int64. |
region | string or null | |
secretAccessKey | string or null | |
status | string or null | |
uncPath | string or null |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
201 | application/json, StorageProfileView | Created. |
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 | Saving a new credential to the vault needs the vault:manage permission. Pick a saved credential instead. |
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 | No client store in request context. |
503 | application/problem+json, ProblemDetails | This Depot has no vault to keep the share credential in yet. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
201 response body
| Field | Type | Description |
|---|---|---|
bucket | string | |
createdAtrequired | string (date-time) | |
credentialPublicId | string | |
credentialsConfiguredrequired | boolean | |
driverrequired | string | |
encryptAtRestrequired | boolean | |
endpoint | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
localRoot | string | |
managedrequired | boolean | |
namerequired | string | |
prefix | string | |
provider | string | |
publicIdrequired | string | |
quotaBytes | integer or null | int64. |
region | string | |
statusrequired | string | |
uncPath | 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 POST 'https://depot.example.com/api/v1/storage/profiles' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -b 'outpost_console=<console-session>' \ --data '{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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 = @'{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}'@
$response = Invoke-RestMethod ` -Method Post ` -Uri 'https://depot.example.com/api/v1/storage/profiles' ` -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/storage/profiles"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json",}cookies = { "outpost_console": "<console-session>",}payload = { "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": False, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string", }, "isDefault": False, "localRoot": "string", "managed": False, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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.package main
import ( "bytes" "fmt" "io" "log" "net/http")
func main() { body := []byte(`{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}`)
req, err := http.NewRequest(http.MethodPost, "https://depot.example.com/api/v1/storage/profiles", 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/storage/profiles";
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({ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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 = """{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}""";
var request = new HttpRequestMessage(HttpMethod.Post, "https://depot.example.com/api/v1/storage/profiles");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/storage/profiles/{profileID}
Section titled “GET /api/v1/storage/profiles/{profileID}”GETstorage:managetenant facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Get storage profile
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | path | string | Yes | A uuid. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, StorageProfileView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold storage: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 | No client store in request context. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
200 response body
| Field | Type | Description |
|---|---|---|
bucket | string | |
createdAtrequired | string (date-time) | |
credentialPublicId | string | |
credentialsConfiguredrequired | boolean | |
driverrequired | string | |
encryptAtRestrequired | boolean | |
endpoint | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
localRoot | string | |
managedrequired | boolean | |
namerequired | string | |
prefix | string | |
provider | string | |
publicIdrequired | string | |
quotaBytes | integer or null | int64. |
region | string | |
statusrequired | string | |
uncPath | 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/storage/profiles/<profileID>' \ -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/storage/profiles/<profileID>' ` -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/storage/profiles/<profileID>"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/storage/profiles/<profileID>", 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/storage/profiles/<profileID>";
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/storage/profiles/<profileID>");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/storage/profiles/{profileID}
Section titled “PATCH /api/v1/storage/profiles/{profileID}”PATCHstorage:managetenant facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Patch storage profile
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | path | string | Yes | A uuid. |
Request body
Section titled “Request body”Required, sent as application/json.
| Field | Type | Description |
|---|---|---|
accessKeyId | string or null | |
bucket | string or null | |
credentialPublicId | string or null | |
driver | string or null | |
encryptAtRest | boolean or null | |
endpoint | string or null | |
inlineCredential | InlineShareCredential | inlineShareCredential is a share credential typed into the storage form rather than picked from the vault. |
inlineCredential.namerequired | string | |
inlineCredential.secretrequired | string | |
inlineCredential.usernamerequired | string | |
isDefault | boolean or null | |
localRoot | string or null | |
managed | boolean or null | |
name | string or null | |
provider | string or null | |
quotaBytes | integer or null | int64. |
region | string or null | |
secretAccessKey | string or null | |
status | string or null | |
uncPath | string or null |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, StorageProfileView | 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 | Saving a new credential to the vault needs the vault:manage permission. Pick a saved credential instead. |
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 | No client store in request context. |
503 | application/problem+json, ProblemDetails | This Depot has no vault to keep the share credential in yet. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
200 response body
| Field | Type | Description |
|---|---|---|
bucket | string | |
createdAtrequired | string (date-time) | |
credentialPublicId | string | |
credentialsConfiguredrequired | boolean | |
driverrequired | string | |
encryptAtRestrequired | boolean | |
endpoint | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
localRoot | string | |
managedrequired | boolean | |
namerequired | string | |
prefix | string | |
provider | string | |
publicIdrequired | string | |
quotaBytes | integer or null | int64. |
region | string | |
statusrequired | string | |
uncPath | 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 PATCH 'https://depot.example.com/api/v1/storage/profiles/<profileID>' \ -H 'X-CSRF-Token: <csrf-token>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -b 'outpost_console=<console-session>' \ --data '{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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 = @'{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}'@
$response = Invoke-RestMethod ` -Method Patch ` -Uri 'https://depot.example.com/api/v1/storage/profiles/<profileID>' ` -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/storage/profiles/<profileID>"headers = { "X-CSRF-Token": "<csrf-token>", "Accept": "application/json", "Content-Type": "application/json",}cookies = { "outpost_console": "<console-session>",}payload = { "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": False, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string", }, "isDefault": False, "localRoot": "string", "managed": False, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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(`{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}`)
req, err := http.NewRequest(http.MethodPatch, "https://depot.example.com/api/v1/storage/profiles/<profileID>", 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/storage/profiles/<profileID>";
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({ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "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 = """{ "accessKeyId": "string", "bucket": "string", "credentialPublicId": "string", "driver": "string", "encryptAtRest": false, "endpoint": "string", "inlineCredential": { "name": "string", "secret": "string", "username": "string" }, "isDefault": false, "localRoot": "string", "managed": false, "name": "string", "provider": "string", "quotaBytes": 0, "region": "string", "secretAccessKey": "string", "status": "string", "uncPath": "string"}""";
var request = new HttpRequestMessage(HttpMethod.Patch, "https://depot.example.com/api/v1/storage/profiles/<profileID>");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/storage/profiles/{profileID}
Section titled “DELETE /api/v1/storage/profiles/{profileID}”DELETEstorage:managetenant facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Delete storage profile
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | 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 storage:manage. |
404 | application/problem+json, ProblemDetails | No resource matches that id. |
409 | application/problem+json, ProblemDetails | Outpost Cloud Storage is a built-in destination and cannot be deleted. Set a different default to stop using it. |
500 | application/problem+json, ProblemDetails | No client store in request context. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
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/storage/profiles/<profileID>' \ -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/storage/profiles/<profileID>' ` -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/storage/profiles/<profileID>"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/storage/profiles/<profileID>", 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/storage/profiles/<profileID>";
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/storage/profiles/<profileID>");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());GET /api/v1/storage/profiles/{profileID}/breakdown
Section titled “GET /api/v1/storage/profiles/{profileID}/breakdown”GETstorage:managetenant facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
getStorageBreakdown answers for the ONE client the request resolved to.
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | path | string | Yes | A uuid. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, StorageBreakdownView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold storage: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 | No client store in request context. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
200 response body
| Field | Type | Description |
|---|---|---|
categoriesrequired | array of StorageCategoryView | |
categories[].categoryrequired | string | |
categories[].objectsrequired | integer | int64. |
categories[].storedBytesrequired | integer | int64. |
clientsScanned | integer | |
clientsUnavailable | integer | |
profileIdrequired | string | |
totalObjectsrequired | integer | int64. |
totalStoredBytesrequired | integer | int64. |
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/storage/profiles/<profileID>/breakdown' \ -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/storage/profiles/<profileID>/breakdown' ` -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/storage/profiles/<profileID>/breakdown"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/storage/profiles/<profileID>/breakdown", 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/storage/profiles/<profileID>/breakdown";
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/storage/profiles/<profileID>/breakdown");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/storage/profiles/{profileID}/probe
Section titled “POST /api/v1/storage/profiles/{profileID}/probe”POSTstorage:managetenant facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Probe storage profile
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
profileID | path | string | Yes | A uuid. |
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, StorageProfileView | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold storage:manage. |
404 | application/problem+json, ProblemDetails | No resource matches that id. |
409 | application/problem+json, ProblemDetails | The request conflicts with the current state. |
422 | application/problem+json, ProblemDetails | A network share is written by the endpoint’s agent, not by this Depot, so it cannot be tested from here. Its first backup reports whether the share is reachable. |
500 | application/problem+json, ProblemDetails | No client store in request context. |
503 | application/problem+json, ProblemDetails | Storage probing is not available on this Depot. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
200 response body
| Field | Type | Description |
|---|---|---|
bucket | string | |
createdAtrequired | string (date-time) | |
credentialPublicId | string | |
credentialsConfiguredrequired | boolean | |
driverrequired | string | |
encryptAtRestrequired | boolean | |
endpoint | string | |
isDefaultrequired | boolean | |
lastProbeAt | string (date-time) or null | |
lastProbeError | string | |
localRoot | string | |
managedrequired | boolean | |
namerequired | string | |
prefix | string | |
provider | string | |
publicIdrequired | string | |
quotaBytes | integer or null | int64. |
region | string | |
statusrequired | string | |
uncPath | 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 POST 'https://depot.example.com/api/v1/storage/profiles/<profileID>/probe' \ -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/storage/profiles/<profileID>/probe' ` -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/storage/profiles/<profileID>/probe"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/storage/profiles/<profileID>/probe", 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/storage/profiles/<profileID>/probe";
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/storage/profiles/<profileID>/probe");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());GET /api/v1/storage/usage
Section titled “GET /api/v1/storage/usage”GETstorage:managetenant facehosteditmspremoteIdempotent
From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.
Source: [object Object]
Get storage usage
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
200 | application/json, object | Success. |
401 | application/problem+json, ProblemDetails | No signed-in identity. |
403 | application/problem+json, ProblemDetails | The identity does not hold storage: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 | No client store in request context. |
507 | application/problem+json, ProblemDetails | The storage profile for this client is over its configured quota. Raise the quota or remove attachments. |
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/storage/usage' \ -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/storage/usage' ` -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/storage/usage"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/storage/usage", 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/storage/usage";
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/storage/usage");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.