Skip to content

Depot integrations

Registers the integration-key and outbound-webhook routes.

This page is generated from the Depot route table. Every operation carries the permission it needs and the anchor an agent can link to.

GETintegrations:adminshared facehosteditmspIdempotent

Source: [object Object]

listIntegrationKeys lists the integration keys, live first; revoked keys are included unless includeRevoked=false.

NameInTypeRequiredDescription
includeRevokedquerystringNo
StatusBodyDescription
200application/json, array of IntegrationKeyViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
[].createdAtrequiredstring (date-time)
[].createdByNamestring or null
[].expiresAtstring (date-time) or null
[].ipAllowlistrequiredarray of string
[].lastIpstring or null
[].lastUsedAtstring (date-time) or null
[].namerequiredstring
[].prefixrequiredstring
[].publicIdrequiredstring
[].revokedAtstring (date-time) or null
[].roleCoderequiredstring
[].roleNamerequiredstring
[].rowVersionrequiredinteger

int64.

Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/integrations/keys?includeRevoked=<includeRevoked>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTintegrations:adminshared facehosteditmsp

Source: [object Object]

createIntegrationKey creates a named key and its service account holding the chosen role (integration_sales by default), and answers the secret once.

Needs a fresh step-up.

Required, sent as application/json.

FieldTypeDescription
expiresAtany

Arbitrary JSON.

ipAllowlistarray of string or null
namestring or null
roleCodestring or null
rowVersioninteger or null

int64.

StatusBodyDescription
201application/json, IntegrationKeyCreatedCreated.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such role.
500application/problem+json, ProblemDetailsCould not create the integration key.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

201 response body

FieldTypeDescription
keyrequiredIntegrationKeyView

integrationKeyView is the wire IntegrationKey (procurement-types.ts).

key.createdAtrequiredstring (date-time)
key.createdByNamestring or null
key.expiresAtstring (date-time) or null
key.ipAllowlistrequiredarray of string
key.lastIpstring or null
key.lastUsedAtstring (date-time) or null
key.namerequiredstring
key.prefixrequiredstring
key.publicIdrequiredstring
key.revokedAtstring (date-time) or null
key.roleCoderequiredstring
key.roleNamerequiredstring
key.rowVersionrequiredinteger

int64.

secretrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/integrations/keys' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"expiresAt": "string",
"ipAllowlist": [
"string"
],
"name": "string",
"roleCode": "string",
"rowVersion": 0
}'

GETintegrations:adminshared facehosteditmspIdempotent

Source: [object Object]

getIntegrationKey reads one integration key.

NameInTypeRequiredDescription
keyIDpathstringYes
StatusBodyDescription
200application/json, IntegrationKeyViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such integration key.
500application/problem+json, ProblemDetailsCould not read the integration key.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
createdAtrequiredstring (date-time)
createdByNamestring or null
expiresAtstring (date-time) or null
ipAllowlistrequiredarray of string
lastIpstring or null
lastUsedAtstring (date-time) or null
namerequiredstring
prefixrequiredstring
publicIdrequiredstring
revokedAtstring (date-time) or null
roleCoderequiredstring
roleNamerequiredstring
rowVersionrequiredinteger

int64.

Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/integrations/keys/<keyID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCHintegrations:adminshared facehosteditmspIdempotent

Source: [object Object]

updateIntegrationKey renames a live key and sets its expiry and IP allowlist.

The role cannot change: create a new key instead.

NameInTypeRequiredDescription
keyIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
expiresAtany

Arbitrary JSON.

ipAllowlistarray of string or null
namestring or null
roleCodestring or null
rowVersioninteger or null

int64.

StatusBodyDescription
200application/json, IntegrationKeyViewSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such integration key.
409application/problem+json, ProblemDetailsA revoked integration key cannot be changed.
412application/problem+json, ProblemDetailsThis item was changed by someone else. Reload it and try again.
500application/problem+json, ProblemDetailsCould not read the integration key.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
createdAtrequiredstring (date-time)
createdByNamestring or null
expiresAtstring (date-time) or null
ipAllowlistrequiredarray of string
lastIpstring or null
lastUsedAtstring (date-time) or null
namerequiredstring
prefixrequiredstring
publicIdrequiredstring
revokedAtstring (date-time) or null
roleCoderequiredstring
roleNamerequiredstring
rowVersionrequiredinteger

int64.

Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PATCH 'https://depot.example.com/api/v1/integrations/keys/<keyID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"expiresAt": "string",
"ipAllowlist": [
"string"
],
"name": "string",
"roleCode": "string",
"rowVersion": 0
}'

POST /api/v1/integrations/keys/{keyID}/revoke

Section titled “POST /api/v1/integrations/keys/{keyID}/revoke”

POSTintegrations:adminshared facehosteditmsp

Source: [object Object]

revokeIntegrationKey revokes a key for good and disables its service account.

Revoking twice answers the key unchanged.

NameInTypeRequiredDescription
keyIDpathstringYes
StatusBodyDescription
200application/json, IntegrationKeyViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such integration key.
500application/problem+json, ProblemDetailsCould not revoke the integration key.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
createdAtrequiredstring (date-time)
createdByNamestring or null
expiresAtstring (date-time) or null
ipAllowlistrequiredarray of string
lastIpstring or null
lastUsedAtstring (date-time) or null
namerequiredstring
prefixrequiredstring
publicIdrequiredstring
revokedAtstring (date-time) or null
roleCoderequiredstring
roleNamerequiredstring
rowVersionrequiredinteger

int64.

Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/integrations/keys/<keyID>/revoke' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETintegrations:adminshared facehosteditmspIdempotentInbound hook

Source: [object Object]

listWebhookEndpoints lists the outbound webhook endpoints.

StatusBodyDescription
200application/json, array of WebhookEndpointViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
[].createdAtrequiredstring (date-time)
[].enabledrequiredboolean
[].eventsrequiredarray of string
[].failingSincestring (date-time) or null
[].namerequiredstring
[].publicIdrequiredstring
[].rowVersionrequiredinteger

int64.

[].updatedAtrequiredstring (date-time)
[].urlrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/integrations/webhooks' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTintegrations:adminshared facehosteditmspInbound hook

Source: [object Object]

createWebhookEndpoint adds an endpoint and answers its signing secret once.

Required, sent as application/json.

FieldTypeDescription
enabledboolean or null
eventsarray of string or null
namestring or null
rowVersioninteger or null

int64.

urlstring or null
StatusBodyDescription
201application/json, WebhookEndpointCreatedCreated.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsCould not create the webhook.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

201 response body

FieldTypeDescription
endpointrequiredWebhookEndpointView

webhookEndpointView is the wire WebhookEndpoint (procurement-types.ts).

endpoint.createdAtrequiredstring (date-time)
endpoint.enabledrequiredboolean
endpoint.eventsrequiredarray of string
endpoint.failingSincestring (date-time) or null
endpoint.namerequiredstring
endpoint.publicIdrequiredstring
endpoint.rowVersionrequiredinteger

int64.

endpoint.updatedAtrequiredstring (date-time)
endpoint.urlrequiredstring
secretrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/integrations/webhooks' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"enabled": false,
"events": [
"string"
],
"name": "string",
"rowVersion": 0,
"url": "string"
}'

GET /api/v1/integrations/webhooks/{webhookID}

Section titled “GET /api/v1/integrations/webhooks/{webhookID}”

GETintegrations:adminshared facehosteditmspIdempotentInbound hook

Source: [object Object]

getWebhookEndpoint reads one webhook endpoint.

NameInTypeRequiredDescription
webhookIDpathstringYes
StatusBodyDescription
200application/json, WebhookEndpointViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such webhook.
500application/problem+json, ProblemDetailsCould not read the webhook.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
createdAtrequiredstring (date-time)
enabledrequiredboolean
eventsrequiredarray of string
failingSincestring (date-time) or null
namerequiredstring
publicIdrequiredstring
rowVersionrequiredinteger

int64.

updatedAtrequiredstring (date-time)
urlrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/integrations/webhooks/<webhookID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCH /api/v1/integrations/webhooks/{webhookID}

Section titled “PATCH /api/v1/integrations/webhooks/{webhookID}”

PATCHintegrations:adminshared facehosteditmspInbound hook

Source: [object Object]

updateWebhookEndpoint changes an endpoint’s name, URL, events or enabled flag.

Absent fields keep their value; rowVersion is required.

NameInTypeRequiredDescription
webhookIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
enabledboolean or null
eventsarray of string or null
namestring or null
rowVersioninteger or null

int64.

urlstring or null
StatusBodyDescription
200application/json, WebhookEndpointViewSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such webhook.
412application/problem+json, ProblemDetailsThis item was changed by someone else. Reload it and try again.
500application/problem+json, ProblemDetailsCould not read the webhook.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
createdAtrequiredstring (date-time)
enabledrequiredboolean
eventsrequiredarray of string
failingSincestring (date-time) or null
namerequiredstring
publicIdrequiredstring
rowVersionrequiredinteger

int64.

updatedAtrequiredstring (date-time)
urlrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X PATCH 'https://depot.example.com/api/v1/integrations/webhooks/<webhookID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"enabled": false,
"events": [
"string"
],
"name": "string",
"rowVersion": 0,
"url": "string"
}'

DELETE /api/v1/integrations/webhooks/{webhookID}

Section titled “DELETE /api/v1/integrations/webhooks/{webhookID}”

DELETEintegrations:adminshared facehosteditmspIdempotentInbound hook

Source: [object Object]

deleteWebhookEndpoint removes an endpoint; nothing more is sent to it.

NameInTypeRequiredDescription
webhookIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such webhook.
500application/problem+json, ProblemDetailsCould not delete the webhook.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X DELETE 'https://depot.example.com/api/v1/integrations/webhooks/<webhookID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/integrations/webhooks/{webhookID}/deliveries

Section titled “GET /api/v1/integrations/webhooks/{webhookID}/deliveries”

GETintegrations:adminshared facehosteditmspIdempotentInbound hook

Source: [object Object]

listWebhookDeliveries pages an endpoint’s deliveries, newest first, filtered by ?state= (comma separated) and ?event=.

NameInTypeRequiredDescription
webhookIDpathstringYes
eventquerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
statequerystring, one of dead, delivered, delivering, pendingNoComma-separated set. An unrecognised value is refused.
StatusBodyDescription
200application/json, PagedResultWebhookDeliveryViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such webhook.
500application/problem+json, ProblemDetailsCould not read the webhook.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
itemsrequiredarray of WebhookDeliveryView
items[].attemptsrequiredinteger
items[].createdAtrequiredstring (date-time)
items[].deliveredAtstring (date-time) or null
items[].endpointIdrequiredstring
items[].eventrequiredstring
items[].eventIdrequiredstring
items[].lastErrorrequiredstring
items[].lastStatusinteger or null
items[].nextAttemptAtrequiredstring (date-time)
items[].publicIdrequiredstring
items[].staterequiredstring
pagerequiredinteger
pageSizerequiredinteger
totalrequiredinteger
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/integrations/webhooks/<webhookID>/deliveries?event=<event>&page=0&pageSize=0&state=dead' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/integrations/webhooks/{webhookID}/rotate-secret

Section titled “POST /api/v1/integrations/webhooks/{webhookID}/rotate-secret”

POSTintegrations:adminshared facehosteditmspInbound hook

Source: [object Object]

rotateWebhookSecret replaces the signing secret and answers the new one once.

NameInTypeRequiredDescription
webhookIDpathstringYes
StatusBodyDescription
200application/json, WebhookEndpointCreatedSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such webhook.
412application/problem+json, ProblemDetailsThis item was changed by someone else. Reload it and try again.
500application/problem+json, ProblemDetailsCould not read the webhook.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
endpointrequiredWebhookEndpointView

webhookEndpointView is the wire WebhookEndpoint (procurement-types.ts).

endpoint.createdAtrequiredstring (date-time)
endpoint.enabledrequiredboolean
endpoint.eventsrequiredarray of string
endpoint.failingSincestring (date-time) or null
endpoint.namerequiredstring
endpoint.publicIdrequiredstring
endpoint.rowVersionrequiredinteger

int64.

endpoint.updatedAtrequiredstring (date-time)
endpoint.urlrequiredstring
secretrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/integrations/webhooks/<webhookID>/rotate-secret' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/integrations/webhooks/{webhookID}/test

Section titled “POST /api/v1/integrations/webhooks/{webhookID}/test”

POSTintegrations:adminshared facehosteditmspInbound hook

Source: [object Object]

testWebhookEndpoint queues a “ping” delivery to the endpoint, whatever it subscribes to and even while it is turned off.

NameInTypeRequiredDescription
webhookIDpathstringYes
StatusBodyDescription
200application/json, WebhookDeliveryViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such webhook.
500application/problem+json, ProblemDetailsCould not queue the test delivery.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
attemptsrequiredinteger
createdAtrequiredstring (date-time)
deliveredAtstring (date-time) or null
endpointIdrequiredstring
eventrequiredstring
eventIdrequiredstring
lastErrorrequiredstring
lastStatusinteger or null
nextAttemptAtrequiredstring (date-time)
publicIdrequiredstring
staterequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/integrations/webhooks/<webhookID>/test' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/integrations/webhooks/deliveries/{deliveryID}/redeliver

Section titled “POST /api/v1/integrations/webhooks/deliveries/{deliveryID}/redeliver”

POSTintegrations:adminshared facehosteditmspIdempotentInbound hook

Source: [object Object]

redeliverWebhook queues a delivered or dead delivery again, now, with the whole retry schedule ahead of it.

NameInTypeRequiredDescription
deliveryIDpathstringYes
StatusBodyDescription
200application/json, WebhookDeliveryViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
404application/problem+json, ProblemDetailsNo such delivery.
409application/problem+json, ProblemDetailsThis delivery is still queued.
500application/problem+json, ProblemDetailsCould not redeliver.
503application/problem+json, ProblemDetailsThis Depot has no home database for this request yet.

200 response body

FieldTypeDescription
attemptsrequiredinteger
createdAtrequiredstring (date-time)
deliveredAtstring (date-time) or null
endpointIdrequiredstring
eventrequiredstring
eventIdrequiredstring
lastErrorrequiredstring
lastStatusinteger or null
nextAttemptAtrequiredstring (date-time)
publicIdrequiredstring
staterequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X POST 'https://depot.example.com/api/v1/integrations/webhooks/deliveries/<deliveryID>/redeliver' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETintegrations:adminshared facehosteditmspIdempotentInbound hook

Source: [object Object]

webhookEventCatalog lists the events an endpoint can subscribe to; the msp-only ones are omitted outside msp mode.

StatusBodyDescription
200application/json, objectSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold integrations:admin.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/integrations/webhooks/events' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

Content is licensed CC BY 4.0. Code samples are MIT. Outpost and the Outpost mark are trademarks of Outpost Business Solutions, PBC and are not covered by either license.