Skip to content

Depot portaladmin

Registers the client portal’s MSP admin routes.

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

GET /api/v1/clients/{clientID}/portal/groups

Section titled “GET /api/v1/clients/{clientID}/portal/groups”

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

listGroups lists the client’s portal groups.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, PageGroupViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
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 GroupView
items[].descriptionrequiredstring
items[].directoryGroupRefstring or null
items[].directorySourcestring or null
items[].idrequiredstring
items[].memberCountrequiredinteger
items[].namerequiredstring
items[].roleIdsrequiredarray of string
items[].rowVersionrequiredinteger

int64.

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/groups' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/clients/{clientID}/portal/groups

Section titled “POST /api/v1/clients/{clientID}/portal/groups”

POSTclientportal:usersmsp facemsp

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

Source: [object Object]

createGroup creates a portal group with roles.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
descriptionstring or null
namestring or null
roleIdsrequiredarray of string
rowVersionrequiredinteger

int64.

StatusBodyDescription
201application/json, GroupViewCreated.
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:users.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

201 response body

FieldTypeDescription
descriptionrequiredstring
directoryGroupRefstring or null
directorySourcestring or null
idrequiredstring
memberCountrequiredinteger
namerequiredstring
roleIdsrequiredarray of string
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/clients/<clientID>/portal/groups' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"description": "string",
"name": "string",
"roleIds": [
"string"
],
"rowVersion": 0
}'

GET /api/v1/clients/{clientID}/portal/groups/{groupID}

Section titled “GET /api/v1/clients/{clientID}/portal/groups/{groupID}”

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

getGroup reads one portal group.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes
StatusBodyDescription
200application/json, GroupViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
descriptionrequiredstring
directoryGroupRefstring or null
directorySourcestring or null
idrequiredstring
memberCountrequiredinteger
namerequiredstring
roleIdsrequiredarray of string
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/clients/<clientID>/portal/groups/<groupID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCH /api/v1/clients/{clientID}/portal/groups/{groupID}

Section titled “PATCH /api/v1/clients/{clientID}/portal/groups/{groupID}”

PATCHclientportal:usersmsp facemsp

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

Source: [object Object]

patchGroup renames or redescribes a portal group.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
descriptionstring or null
namestring or null
roleIdsrequiredarray of string
rowVersionrequiredinteger

int64.

StatusBodyDescription
200application/json, GroupViewSuccess.
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:users.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
descriptionrequiredstring
directoryGroupRefstring or null
directorySourcestring or null
idrequiredstring
memberCountrequiredinteger
namerequiredstring
roleIdsrequiredarray of string
rowVersionrequiredinteger

int64.

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/clients/<clientID>/portal/groups/<groupID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"description": "string",
"name": "string",
"roleIds": [
"string"
],
"rowVersion": 0
}'

DELETE /api/v1/clients/{clientID}/portal/groups/{groupID}

Section titled “DELETE /api/v1/clients/{clientID}/portal/groups/{groupID}”

DELETEclientportal:usersmsp facemspIdempotent

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

Source: [object Object]

deleteGroup deletes a portal group and the remote grants made to it.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:users.
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/groups/<groupID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUT /api/v1/clients/{clientID}/portal/groups/{groupID}/members

Section titled “PUT /api/v1/clients/{clientID}/portal/groups/{groupID}/members”

PUTclientportal:usersmsp facemspIdempotent

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

Source: [object Object]

putGroupMembers replaces a portal group’s hand-added members.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
memberIdsrequiredarray of string
StatusBodyDescription
200application/json, GroupViewSuccess.
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:users.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
descriptionrequiredstring
directoryGroupRefstring or null
directorySourcestring or null
idrequiredstring
memberCountrequiredinteger
namerequiredstring
roleIdsrequiredarray of string
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 PUT 'https://depot.example.com/api/v1/clients/<clientID>/portal/groups/<groupID>/members' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"memberIds": [
"string"
]
}'

PUT /api/v1/clients/{clientID}/portal/groups/{groupID}/roles

Section titled “PUT /api/v1/clients/{clientID}/portal/groups/{groupID}/roles”

PUTclientportal:usersmsp facemspIdempotent

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

Source: [object Object]

putGroupRoles replaces a portal group’s roles.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
roleIdsrequiredarray of string
StatusBodyDescription
200application/json, GroupViewSuccess.
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:users.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
descriptionrequiredstring
directoryGroupRefstring or null
directorySourcestring or null
idrequiredstring
memberCountrequiredinteger
namerequiredstring
roleIdsrequiredarray of string
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 PUT 'https://depot.example.com/api/v1/clients/<clientID>/portal/groups/<groupID>/roles' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"roleIds": [
"string"
]
}'

GET /api/v1/clients/{clientID}/portal/members

Section titled “GET /api/v1/clients/{clientID}/portal/members”

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

listMembers lists the client’s portal members, every status.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, PageMemberViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
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 MemberView
items[].activatedAtstring (date-time) or null
items[].createdByrequiredActorView

ActorView is who made a change.

items[].createdBy.kindrequiredstring
items[].createdBy.labelstring or null
items[].createdBy.refrequiredstring
items[].displayNamerequiredstring
items[].emailrequiredstring
items[].groupIdsrequiredarray of string
items[].idrequiredstring
items[].identityIdrequiredstring
items[].invitedAtrequiredstring (date-time)
items[].lastSignInAtstring (date-time) or null
items[].namedUserNamedUserRef

NamedUserRef is the linked person on a member.

items[].namedUser.displayNamerequiredstring
items[].namedUser.idrequiredstring
items[].namedUserIdstring or null
items[].offboardedAtstring (date-time) or null
items[].roleIdsrequiredarray of string
items[].rowVersionrequiredinteger

int64.

items[].statusrequiredstring
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/members' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/clients/{clientID}/portal/members

Section titled “POST /api/v1/clients/{clientID}/portal/members”

POSTclientportal:usersmsp facemsp

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

Source: [object Object]

inviteMember invites a person to the client’s portal by email.

The first person invited with no roles is the client’s owner.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
displayNamerequiredstring
emailrequiredstring
namedUserIdstring or null
roleIdsrequiredarray of string
StatusBodyDescription
201application/json, MemberViewCreated.
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:users.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

201 response body

FieldTypeDescription
activatedAtstring (date-time) or null
createdByrequiredActorView

ActorView is who made a change.

createdBy.kindrequiredstring
createdBy.labelstring or null
createdBy.refrequiredstring
displayNamerequiredstring
emailrequiredstring
groupIdsrequiredarray of string
idrequiredstring
identityIdrequiredstring
invitedAtrequiredstring (date-time)
lastSignInAtstring (date-time) or null
namedUserNamedUserRef

NamedUserRef is the linked person on a member.

namedUser.displayNamerequiredstring
namedUser.idrequiredstring
namedUserIdstring or null
offboardedAtstring (date-time) or null
roleIdsrequiredarray of string
rowVersionrequiredinteger

int64.

statusrequiredstring
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/members' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"displayName": "string",
"email": "string",
"namedUserId": "string",
"roleIds": [
"string"
]
}'

GET /api/v1/clients/{clientID}/portal/members/{memberID}

Section titled “GET /api/v1/clients/{clientID}/portal/members/{memberID}”

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

getMember reads one portal member.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes
StatusBodyDescription
200application/json, MemberViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
activatedAtstring (date-time) or null
createdByrequiredActorView

ActorView is who made a change.

createdBy.kindrequiredstring
createdBy.labelstring or null
createdBy.refrequiredstring
displayNamerequiredstring
emailrequiredstring
groupIdsrequiredarray of string
idrequiredstring
identityIdrequiredstring
invitedAtrequiredstring (date-time)
lastSignInAtstring (date-time) or null
namedUserNamedUserRef

NamedUserRef is the linked person on a member.

namedUser.displayNamerequiredstring
namedUser.idrequiredstring
namedUserIdstring or null
offboardedAtstring (date-time) or null
roleIdsrequiredarray of string
rowVersionrequiredinteger

int64.

statusrequiredstring
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/members/<memberID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCH /api/v1/clients/{clientID}/portal/members/{memberID}

Section titled “PATCH /api/v1/clients/{clientID}/portal/members/{memberID}”

PATCHclientportal:usersmsp facemsp

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

Source: [object Object]

patchMember renames a member, links them to a named user, or suspends or reinstates them.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
displayNamestring or null
namedUserIdstring or null
rowVersionrequiredinteger

int64.

statusstring or null
StatusBodyDescription
200application/json, MemberViewSuccess.
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:users.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
activatedAtstring (date-time) or null
createdByrequiredActorView

ActorView is who made a change.

createdBy.kindrequiredstring
createdBy.labelstring or null
createdBy.refrequiredstring
displayNamerequiredstring
emailrequiredstring
groupIdsrequiredarray of string
idrequiredstring
identityIdrequiredstring
invitedAtrequiredstring (date-time)
lastSignInAtstring (date-time) or null
namedUserNamedUserRef

NamedUserRef is the linked person on a member.

namedUser.displayNamerequiredstring
namedUser.idrequiredstring
namedUserIdstring or null
offboardedAtstring (date-time) or null
roleIdsrequiredarray of string
rowVersionrequiredinteger

int64.

statusrequiredstring
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/clients/<clientID>/portal/members/<memberID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"displayName": "string",
"namedUserId": "string",
"rowVersion": 0,
"status": "string"
}'

DELETE /api/v1/clients/{clientID}/portal/members/{memberID}

Section titled “DELETE /api/v1/clients/{clientID}/portal/members/{memberID}”

DELETEclientportal:usersmsp facemspIdempotent

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

Source: [object Object]

offboardMember ends a member’s portal access at once: grants, open invites, live remote sessions, and their sessions when this was their last organization.

The MSP may remove a departing client’s last owner.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:users.
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/members/<memberID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/clients/{clientID}/portal/members/{memberID}/effective-permissions

Section titled “GET /api/v1/clients/{clientID}/portal/members/{memberID}/effective-permissions”

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

memberEffective previews a member (“view as”): the permissions they hold now, and what their roles grant that the ceiling clips.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes
StatusBodyDescription
200application/json, EffectiveViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
clippedrequiredarray of string
grantedrequiredarray of string
memberIdrequiredstring
permissionsrequiredarray of string
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/clients/<clientID>/portal/members/<memberID>/effective-permissions' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/clients/{clientID}/portal/members/{memberID}/resend

Section titled “POST /api/v1/clients/{clientID}/portal/members/{memberID}/resend”

POSTclientportal:usersmsp facemsp

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

Source: [object Object]

resendInvite mails a fresh invitation and revokes the previous link.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:users.
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.
curl -X POST 'https://depot.example.com/api/v1/clients/<clientID>/portal/members/<memberID>/resend' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUT /api/v1/clients/{clientID}/portal/members/{memberID}/roles

Section titled “PUT /api/v1/clients/{clientID}/portal/members/{memberID}/roles”

PUTclientportal:usersmsp facemspIdempotent

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

Source: [object Object]

putMemberRoles replaces a member’s roles.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
roleIdsrequiredarray of string
StatusBodyDescription
200application/json, MemberViewSuccess.
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:users.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
activatedAtstring (date-time) or null
createdByrequiredActorView

ActorView is who made a change.

createdBy.kindrequiredstring
createdBy.labelstring or null
createdBy.refrequiredstring
displayNamerequiredstring
emailrequiredstring
groupIdsrequiredarray of string
idrequiredstring
identityIdrequiredstring
invitedAtrequiredstring (date-time)
lastSignInAtstring (date-time) or null
namedUserNamedUserRef

NamedUserRef is the linked person on a member.

namedUser.displayNamerequiredstring
namedUser.idrequiredstring
namedUserIdstring or null
offboardedAtstring (date-time) or null
roleIdsrequiredarray of string
rowVersionrequiredinteger

int64.

statusrequiredstring
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 PUT 'https://depot.example.com/api/v1/clients/<clientID>/portal/members/<memberID>/roles' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"roleIds": [
"string"
]
}'

GET /api/v1/clients/{clientID}/portal/named-users

Section titled “GET /api/v1/clients/{clientID}/portal/named-users”

GETclientportal:usersmsp facemspIdempotent

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

Source: [object Object]

searchNamedUsers finds the client’s people for linking a portal member (the “assigned to me” remote grant goes through the link).

Names and addresses only; q matches the start of a word in either.

NameInTypeRequiredDescription
clientIDpathstringYes
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
qquerystringNo
StatusBodyDescription
200application/json, PageNamedUserHitSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:users.
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 NamedUserHit
items[].displayNamerequiredstring
items[].emailstring or null
items[].idrequiredstring
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/named-users?page=0&pageSize=0&q=<q>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/clients/{clientID}/portal/permissions

Section titled “GET /api/v1/clients/{clientID}/portal/permissions”

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

listPermissions lists the portal permission catalog, marking what the client’s ceiling allows: the ceiling editor’s checkbox tree.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, array of PermissionViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
[].allowedByCeilingrequiredboolean
[].arearequiredstring
[].coderequiredstring
[].descriptionrequiredstring
[].impliesrequiredarray of string
[].namerequiredstring
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/permissions' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/clients/{clientID}/portal/roles

Section titled “GET /api/v1/clients/{clientID}/portal/roles”

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

listRoles lists the client’s portal roles, with codes the ceiling clips.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, PageRoleViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
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 RoleView
items[].clippedPermissionsrequiredarray of string
items[].codestring or null
items[].descriptionrequiredstring
items[].idrequiredstring
items[].isSystemrequiredboolean
items[].memberCountrequiredinteger
items[].namerequiredstring
items[].permissionsrequiredarray of string
items[].rowVersionrequiredinteger

int64.

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/roles' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/clients/{clientID}/portal/roles

Section titled “POST /api/v1/clients/{clientID}/portal/roles”

POSTclientportal:usersmsp facemsp

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

Source: [object Object]

createRole creates a custom portal role within the ceiling.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
descriptionstring or null
namestring or null
permissionsarray of string or null
rowVersionrequiredinteger

int64.

StatusBodyDescription
201application/json, RoleViewCreated.
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:users.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

201 response body

FieldTypeDescription
clippedPermissionsrequiredarray of string
codestring or null
descriptionrequiredstring
idrequiredstring
isSystemrequiredboolean
memberCountrequiredinteger
namerequiredstring
permissionsrequiredarray of string
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/clients/<clientID>/portal/roles' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"description": "string",
"name": "string",
"permissions": [
"string"
],
"rowVersion": 0
}'

GET /api/v1/clients/{clientID}/portal/roles/{roleID}

Section titled “GET /api/v1/clients/{clientID}/portal/roles/{roleID}”

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

getRole reads one portal role.

NameInTypeRequiredDescription
clientIDpathstringYes
roleIDpathstringYes
StatusBodyDescription
200application/json, RoleViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
clippedPermissionsrequiredarray of string
codestring or null
descriptionrequiredstring
idrequiredstring
isSystemrequiredboolean
memberCountrequiredinteger
namerequiredstring
permissionsrequiredarray of string
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/clients/<clientID>/portal/roles/<roleID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCH /api/v1/clients/{clientID}/portal/roles/{roleID}

Section titled “PATCH /api/v1/clients/{clientID}/portal/roles/{roleID}”

PATCHclientportal:usersmsp facemsp

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

Source: [object Object]

patchRole edits a portal role (never the owner role).

NameInTypeRequiredDescription
clientIDpathstringYes
roleIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
descriptionstring or null
namestring or null
permissionsarray of string or null
rowVersionrequiredinteger

int64.

StatusBodyDescription
200application/json, RoleViewSuccess.
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:users.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
clippedPermissionsrequiredarray of string
codestring or null
descriptionrequiredstring
idrequiredstring
isSystemrequiredboolean
memberCountrequiredinteger
namerequiredstring
permissionsrequiredarray of string
rowVersionrequiredinteger

int64.

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/clients/<clientID>/portal/roles/<roleID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"description": "string",
"name": "string",
"permissions": [
"string"
],
"rowVersion": 0
}'

DELETE /api/v1/clients/{clientID}/portal/roles/{roleID}

Section titled “DELETE /api/v1/clients/{clientID}/portal/roles/{roleID}”

DELETEclientportal:usersmsp facemspIdempotent

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

Source: [object Object]

deleteRole deletes a custom portal role.

NameInTypeRequiredDescription
clientIDpathstringYes
roleIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:users.
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/roles/<roleID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/clients/{clientID}/portal/settings

Section titled “GET /api/v1/clients/{clientID}/portal/settings”

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

getClientSettings reads a client’s portal settings: whether the portal is on, the permission and remote-access ceilings, IdP MFA trust and how the audit trail names technicians.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, PortalClientSettingsViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
auditNamingstring or null
clientIdrequiredstring
dirSyncEnabledrequiredboolean
dirSyncLastErrorstring or null
dirSyncLastRunAtstring (date-time) or null
enabledrequiredboolean
permissionCeilingrequiredarray of string
portalUrlrequiredstring
remoterequiredPortalRemoteCeiling

PortalRemoteCeiling is the MSP's remote-access ceiling for a client.

remote.allowedModesrequiredarray of string
remote.consentRequiredrequiredboolean
remote.enabledrequiredboolean
remote.maxGrantDaysinteger or null
remote.recordingRequiredrequiredboolean
remote.stepUpMfarequiredboolean
rowVersionrequiredinteger

int64.

trustIdpMfarequiredboolean
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/settings' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUT /api/v1/clients/{clientID}/portal/settings

Section titled “PUT /api/v1/clients/{clientID}/portal/settings”

PUTclientportal:managemsp facemspIdempotent

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

Source: [object Object]

putClientSettings turns the portal on or off and sets its ceilings.

Changing the remote-access ceiling also needs clientportal:remote. Lowering the permission ceiling rewrites no role: roles are clipped when read.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
auditNamingrequiredany

Arbitrary JSON.

dirSyncEnabledboolean or null
enabledboolean or null
permissionCeilingrequiredany

Arbitrary JSON.

remoteobject or null
remote.allowedModesarray of string or null
remote.consentRequiredboolean or null
remote.enabledboolean or null
remote.maxGrantDaysrequiredany

Arbitrary JSON.

remote.recordingRequiredboolean or null
remote.stepUpMfaboolean or null
rowVersionrequiredinteger

int64.

trustIdpMfaboolean or null
StatusBodyDescription
200application/json, PortalClientSettingsViewSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsChanging the remote access ceiling needs the clientportal:remote permission.
404application/problem+json, ProblemDetailsNo client matches that id.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
auditNamingstring or null
clientIdrequiredstring
dirSyncEnabledrequiredboolean
dirSyncLastErrorstring or null
dirSyncLastRunAtstring (date-time) or null
enabledrequiredboolean
permissionCeilingrequiredarray of string
portalUrlrequiredstring
remoterequiredPortalRemoteCeiling

PortalRemoteCeiling is the MSP's remote-access ceiling for a client.

remote.allowedModesrequiredarray of string
remote.consentRequiredrequiredboolean
remote.enabledrequiredboolean
remote.maxGrantDaysinteger or null
remote.recordingRequiredrequiredboolean
remote.stepUpMfarequiredboolean
rowVersionrequiredinteger

int64.

trustIdpMfarequiredboolean
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 PUT 'https://depot.example.com/api/v1/clients/<clientID>/portal/settings' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"auditNaming": "string",
"dirSyncEnabled": false,
"enabled": false,
"permissionCeiling": "string",
"remote": {
"allowedModes": [
"string"
],
"consentRequired": false,
"enabled": false,
"maxGrantDays": "string",
"recordingRequired": false,
"stepUpMfa": false
},
"rowVersion": 0,
"trustIdpMfa": false
}'

GETclientportal:managemsp facemspIdempotent

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

Source: [object Object]

getSSO reads the client’s portal SSO: email domains and how each signs in (the Outpost broker or the client’s own IdP connection), whether the IdP’s MFA is trusted, and directory group mappings.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, PortalSSOViewSuccess.
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
dirSyncEnabledrequiredboolean
domainsrequiredarray of PortalSsoDomainView
domains[].emailDomainrequiredstring
domains[].idrequiredstring
domains[].idpConnectionIdstring or null
domains[].moderequiredstring
domains[].providerrequiredstring
domains[].tenantRefstring or null
groupMappingsrequiredarray of PortalDirectoryMapping
groupMappings[].directoryGroupRefstring or null
groupMappings[].directorySourcestring or null
groupMappings[].groupIdrequiredstring
groupMappings[].groupNamerequiredstring
rowVersionrequiredinteger

int64.

trustIdpMfarequiredboolean
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/sso' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUTclientportal:managemsp facemspIdempotent

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

Source: [object Object]

putSSO changes the client’s portal SSO.

Everything is validated before anything is written.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
dirSyncEnabledboolean or null
domainsarray of object or null
domains[].emailDomainrequiredstring
domains[].idpConnectionIdstring or null
domains[].moderequiredstring
domains[].providerrequiredstring
domains[].tenantRefstring or null
groupMappingsrequiredarray of PortalDirectoryMapping
groupMappings[].directoryGroupRefstring or null
groupMappings[].directorySourcestring or null
groupMappings[].groupIdrequiredstring
groupMappings[].groupNamerequiredstring
rowVersionrequiredinteger

int64.

trustIdpMfaboolean or null
StatusBodyDescription
200application/json, PortalSSOViewSuccess.
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.
500application/problem+json, ProblemDetailsCould not read the client’s portal settings.

200 response body

FieldTypeDescription
dirSyncEnabledrequiredboolean
domainsrequiredarray of PortalSsoDomainView
domains[].emailDomainrequiredstring
domains[].idrequiredstring
domains[].idpConnectionIdstring or null
domains[].moderequiredstring
domains[].providerrequiredstring
domains[].tenantRefstring or null
groupMappingsrequiredarray of PortalDirectoryMapping
groupMappings[].directoryGroupRefstring or null
groupMappings[].directorySourcestring or null
groupMappings[].groupIdrequiredstring
groupMappings[].groupNamerequiredstring
rowVersionrequiredinteger

int64.

trustIdpMfarequiredboolean
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 PUT 'https://depot.example.com/api/v1/clients/<clientID>/portal/sso' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"dirSyncEnabled": false,
"domains": [
{
"emailDomain": "string",
"idpConnectionId": "string",
"mode": "string",
"provider": "string",
"tenantRef": "string"
}
],
"groupMappings": [
{
"directoryGroupRef": "string",
"directorySource": "string",
"groupId": "string",
"groupName": "string"
}
],
"rowVersion": 0,
"trustIdpMfa": false
}'

GETclientportal:readmsp facemspIdempotent

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

Source: [object Object]

getPracticeSettings reads the practice’s portal defaults: technician naming in client audit trails, session limits, invite lifetime and notification defaults.

StatusBodyDescription
200application/json, PortalPracticeSettingsViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold clientportal:read.
500application/problem+json, ProblemDetailsCould not read the portal defaults.

200 response body

FieldTypeDescription
absoluteHoursrequiredinteger
auditNamingrequiredstring
digestHourLocalrequiredinteger
eventsrequiredarray of PortalEventView
events[].defaultChannelrequiredstring
events[].kindrequiredstring
events[].labelrequiredstring
events[].neverOffrequiredboolean
events[].permissionrequiredstring
idleMinutesrequiredinteger
inviteDaysrequiredinteger
notificationDefaultsrequiredobject
rowVersionrequiredinteger

int64.

sensitiveReauthMinutesrequiredinteger
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/portal/settings' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUTclientportal:managemsp facemspIdempotent

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

Source: [object Object]

putPracticeSettings changes the practice’s portal defaults.

SensitiveReauthMinutes never exceeds 15 (PCI DSS 8.2.8).

Required, sent as application/json.

FieldTypeDescription
absoluteHoursinteger or null
auditNamingstring or null
digestHourLocalinteger or null
idleMinutesinteger or null
inviteDaysinteger or null
notificationDefaultsobject or null
rowVersionrequiredinteger

int64.

sensitiveReauthMinutesinteger or null
StatusBodyDescription
200application/json, PortalPracticeSettingsViewSuccess.
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.
500application/problem+json, ProblemDetailsCould not read the portal defaults.

200 response body

FieldTypeDescription
absoluteHoursrequiredinteger
auditNamingrequiredstring
digestHourLocalrequiredinteger
eventsrequiredarray of PortalEventView
events[].defaultChannelrequiredstring
events[].kindrequiredstring
events[].labelrequiredstring
events[].neverOffrequiredboolean
events[].permissionrequiredstring
idleMinutesrequiredinteger
inviteDaysrequiredinteger
notificationDefaultsrequiredobject
rowVersionrequiredinteger

int64.

sensitiveReauthMinutesrequiredinteger
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 PUT 'https://depot.example.com/api/v1/portal/settings' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"absoluteHours": 0,
"auditNaming": "string",
"digestHourLocal": 0,
"idleMinutes": 0,
"inviteDays": 0,
"notificationDefaults": {
"key": "string"
},
"rowVersion": 0,
"sensitiveReauthMinutes": 0
}'

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.