Skip to content

Depot portalidp

Registers the routes on the portal admin 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/clients/{clientID}/portal/idp-connections

Section titled “GET /api/v1/clients/{clientID}/portal/idp-connections”

GETclientportal:managemsp facemspIdempotent

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

Source: [object Object]

listPortalIdps lists the client’s portal sign-in connections.

Secrets are never returned.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, PagedResultIdpConnectionViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:manage.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
itemsrequiredarray of IdpConnectionView
items[].allowedPurposesrequiredarray of string
items[].autoCreateNamedUserrequiredboolean
items[].clientIdrequiredstring
items[].displayNamerequiredstring
items[].hasClientSecretrequiredboolean
items[].hostedDomainstring or null
items[].identifierClaimrequiredstring
items[].issuerrequiredstring
items[].providerrequiredstring
items[].publicIdrequiredstring
items[].rowVersionrequiredinteger

int64.

items[].scopesrequiredarray of string
items[].secretExpiresAtstring (date-time) or null
items[].staterequiredstring
items[].tenantHintstring or null
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/clients/<clientID>/portal/idp-connections' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/clients/{clientID}/portal/idp-connections

Section titled “POST /api/v1/clients/{clientID}/portal/idp-connections”

POSTclientportal:managemsp facemsp

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

Source: [object Object]

createPortalIdp adds the client’s own identity provider for portal sign-in.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
clientIdrequiredstring
clientSecretrequiredstring
displayNamerequiredstring
hostedDomainrequiredstring
identifierClaimrequiredstring
issuerrequiredstring
providerrequiredstring
scopesrequiredarray of string
secretExpiresAtstring (date-time) or null
tenantHintrequiredstring
StatusBodyDescription
201application/json, IdpConnectionViewCreated.
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 clientportal:manage.
404application/problem+json, ProblemDetailsNo client matches that id.
409application/problem+json, ProblemDetailsThe identity provider could not be saved.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

201 response body

FieldTypeDescription
allowedPurposesrequiredarray of string
autoCreateNamedUserrequiredboolean
clientIdrequiredstring
displayNamerequiredstring
hasClientSecretrequiredboolean
hostedDomainstring or null
identifierClaimrequiredstring
issuerrequiredstring
providerrequiredstring
publicIdrequiredstring
rowVersionrequiredinteger

int64.

scopesrequiredarray of string
secretExpiresAtstring (date-time) or null
staterequiredstring
tenantHintstring or null
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/clients/<clientID>/portal/idp-connections' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"clientId": "string",
"clientSecret": "string",
"displayName": "string",
"hostedDomain": "string",
"identifierClaim": "string",
"issuer": "string",
"provider": "string",
"scopes": [
"string"
],
"secretExpiresAt": "2026-01-01T00:00:00Z",
"tenantHint": "string"
}'

PATCH /api/v1/clients/{clientID}/portal/idp-connections/{id}

Section titled “PATCH /api/v1/clients/{clientID}/portal/idp-connections/{id}”

PATCHclientportal:managemsp facemspIdempotent

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

Source: [object Object]

patchPortalIdp changes a portal sign-in connection.

Its purposes are not changed here.

NameInTypeRequiredDescription
clientIDpathstringYes
idpathstringYesA uuid.

Required, sent as application/json.

FieldTypeDescription
clearSecretExpiryrequiredboolean
clientIdstring or null
clientSecretstring or null
displayNamestring or null
hostedDomainstring or null
identifierClaimstring or null
issuerstring or null
rowVersionrequiredinteger

int64.

scopesarray of string or null
secretExpiresAtstring (date-time) or null
statestring or null
tenantHintstring or null
StatusBodyDescription
200application/json, IdpConnectionViewSuccess.
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 clientportal:manage.
404application/problem+json, ProblemDetailsNo client matches that id.
409application/problem+json, ProblemDetailsThis identity provider changed since you loaded it. Reload and try again.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
allowedPurposesrequiredarray of string
autoCreateNamedUserrequiredboolean
clientIdrequiredstring
displayNamerequiredstring
hasClientSecretrequiredboolean
hostedDomainstring or null
identifierClaimrequiredstring
issuerrequiredstring
providerrequiredstring
publicIdrequiredstring
rowVersionrequiredinteger

int64.

scopesrequiredarray of string
secretExpiresAtstring (date-time) or null
staterequiredstring
tenantHintstring or null
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PATCH 'https://depot.example.com/api/v1/clients/<clientID>/portal/idp-connections/<id>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"clearSecretExpiry": false,
"clientId": "string",
"clientSecret": "string",
"displayName": "string",
"hostedDomain": "string",
"identifierClaim": "string",
"issuer": "string",
"rowVersion": 0,
"scopes": [
"string"
],
"secretExpiresAt": "2026-01-01T00:00:00Z",
"state": "string",
"tenantHint": "string"
}'

DELETE /api/v1/clients/{clientID}/portal/idp-connections/{id}

Section titled “DELETE /api/v1/clients/{clientID}/portal/idp-connections/{id}”

DELETEclientportal:managemsp facemspIdempotent

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

Source: [object Object]

deletePortalIdp removes a portal sign-in connection.

One an email domain still signs in through, or one that is also used for device enrollment, is refused.

NameInTypeRequiredDescription
clientIDpathstringYes
idpathstringYesA uuid.
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:manage.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.
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/clients/<clientID>/portal/idp-connections/<id>' \
-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.