Skip to content

Depot portal org

Registers the org routes (contract 8.2) behind the org middleware.

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

GETportal facemspIdempotent

Source: [object Object]

orgContext answers the organization: who the caller is in it, what they may do, and how it is branded.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, OrgContextSuccess.
404application/problem+json, ProblemDetailsNo resource matches that id.

200 response body

FieldTypeDescription
brandingrequiredany
clientIdrequiredstring
memberIdrequiredstring
namerequiredstring
permissionsrequiredarray of string
Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

GETportal:audit:readportal facemspIdempotentNot fully resolved

What this page does not know
  • response

These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.

Source: [object Object]

AuditList answers one page of the client’s audit trail, newest first.

Filters: actorKind, verb, from, to (RFC 3339, on when it happened).

NameInTypeRequiredDescription
clientIDpathstringYes
actorKindquerystringNo
pagequerystringNo
pageSizequerystringNo
verbquerystringNo
StatusBodyDescription
200NoneSuccess. The body shape was not resolved; see x-outpost-unresolved.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:audit:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/audit?actorKind=<actorKind>&page=<page>&pageSize=<pageSize>&verb=<verb>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

GET /api/portal/v1/orgs/{clientID}/audit/export

Section titled “GET /api/portal/v1/orgs/{clientID}/audit/export”

GETportal:audit:exportportal facemspIdempotentdownloadNot fully resolved

What this page does not know
  • response

These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.

Source: [object Object]

AuditExport downloads the trail as CSV or JSON (format=csv|json, default json), oldest first, with each entry’s hashes and canonical bytes so the file verifies offline.

Same filters as the list.

NameInTypeRequiredDescription
clientIDpathstringYes
actorKindquerystringNo
formatquerystringNo
verbquerystringNo
StatusBodyDescription
200application/octet-stream, string (binary)Success. The body shape was not resolved; see x-outpost-unresolved.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:audit:export.
404application/problem+json, ProblemDetailsNo resource matches that id.
Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/audit/export?actorKind=<actorKind>&format=<format>&verb=<verb>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

GET /api/portal/v1/orgs/{clientID}/audit/verify

Section titled “GET /api/portal/v1/orgs/{clientID}/audit/verify”

GETportal:audit:readportal facemspIdempotentNot fully resolved

What this page does not know
  • response

These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.

Source: [object Object]

AuditVerify walks the whole chain and answers {ok, checkedRows, firstBadRowId}.

A broken chain is a 200 verdict, not an error.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200NoneSuccess. The body shape was not resolved; see x-outpost-unresolved.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:audit:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/audit/verify' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

GETportal:users:readportal facemspIdempotent

Source: [object Object]

listGroups lists the organization’s groups.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, PageGroupViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:read.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session 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/portal/v1/orgs/<clientID>/groups' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

POSTportal:users:manageportal facemsp

Source: [object Object]

createGroup creates a group.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
201application/json, GroupViewCreated.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

201 response body

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

int64.

Terminal window
# Sign in first. __Host-portal_session is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/portal/v1/orgs/<clientID>/groups' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

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

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

GETportal:users:readportal facemspIdempotent

Source: [object Object]

getGroup reads one group.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes
StatusBodyDescription
200application/json, GroupViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:read.
404application/problem+json, ProblemDetailsNo resource matches that id.

200 response body

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

int64.

Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/groups/<groupID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

PATCHportal:users:manageportal facemsp

Source: [object Object]

patchGroup renames or redescribes a group.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, GroupViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

200 response body

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

int64.

Terminal window
# Sign in first. __Host-portal_session is a session cookie, so send it with every request.
curl -X PATCH 'https://depot.example.com/api/portal/v1/orgs/<clientID>/groups/<groupID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

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

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

DELETEportal:users:manageportal facemspIdempotent

Source: [object Object]

deleteGroup deletes a group.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/groups/<groupID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

PUTportal:users:manageportal facemspIdempotent

Source: [object Object]

putGroupMembers replaces a group’s hand-added members.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, GroupViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

200 response body

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

int64.

Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/groups/<groupID>/members' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

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

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

PUTportal:users:manageportal facemspIdempotent

Source: [object Object]

putGroupRoles replaces a group’s roles.

NameInTypeRequiredDescription
clientIDpathstringYes
groupIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, GroupViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

200 response body

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

int64.

Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/groups/<groupID>/roles' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

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

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

GETportal:users:readportal facemspIdempotent

Source: [object Object]

listMembers lists the organization’s portal members.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, PageMemberViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:read.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session 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/portal/v1/orgs/<clientID>/members' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

POSTportal:users:manageportal facemsp

Source: [object Object]

inviteMember invites a person by email, with roles the caller may give.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
201application/json, MemberViewCreated.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/portal/v1/orgs/<clientID>/members' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

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

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

GETportal:users:readportal facemspIdempotent

Source: [object Object]

getMember reads one member.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes
StatusBodyDescription
200application/json, MemberViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:read.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session 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/portal/v1/orgs/<clientID>/members/<memberID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

PATCHportal:users:manageportal facemsp

Source: [object Object]

patchMember renames, links, suspends or reinstates a member.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, MemberViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session is a session cookie, so send it with every request.
curl -X PATCH 'https://depot.example.com/api/portal/v1/orgs/<clientID>/members/<memberID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

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

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

DELETEportal:users:manageportal facemspIdempotent

Source: [object Object]

offboardMember ends a member’s access at once: their grants, invites and (when this was their last organization) sessions.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/members/<memberID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

POSTportal:users:manageportal facemsp

Source: [object Object]

resendInvite mails a new invitation link and revokes the old one.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
Terminal window
# Sign in first. __Host-portal_session is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/portal/v1/orgs/<clientID>/members/<memberID>/resend' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

PUTportal:users:manageportal facemspIdempotent

Source: [object Object]

putMemberRoles replaces a member’s roles.

NameInTypeRequiredDescription
clientIDpathstringYes
memberIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, MemberViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session 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/portal/v1/orgs/<clientID>/members/<memberID>/roles' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

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

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

GETportal:users:manageportal facemspIdempotent

Source: [object Object]

searchNamedUsers finds the client’s people for the member picker: names and addresses only.

q matches the start of a word in either.

NameInTypeRequiredDescription
clientIDpathstringYes
pagequerystringNo
qquerystringNo
StatusBodyDescription
200application/json, PageNamedUserHitSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

200 response body

FieldTypeDescription
itemsrequiredarray of NamedUserHit
items[].displayNamerequiredstring
items[].emailstring or null
items[].idrequiredstring
pagerequiredinteger
pageSizerequiredinteger
totalrequiredinteger
Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/named-users?page=<page>&q=<q>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

GETportal:users:readportal facemspIdempotent

Source: [object Object]

listPermissions lists the permission catalog with what the MSP allows.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, array of PermissionViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:read.
404application/problem+json, ProblemDetailsNo resource matches that id.

200 response body

FieldTypeDescription
[].allowedByCeilingrequiredboolean
[].arearequiredstring
[].coderequiredstring
[].descriptionrequiredstring
[].impliesrequiredarray of string
[].namerequiredstring
Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/permissions' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

GETportal:users:readportal facemspIdempotent

Source: [object Object]

listRoles lists the organization’s roles.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, PageRoleViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:read.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session 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/portal/v1/orgs/<clientID>/roles' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

POSTportal:users:manageportal facemsp

Source: [object Object]

createRole creates a custom role holding codes the caller holds.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
201application/json, RoleViewCreated.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/portal/v1/orgs/<clientID>/roles' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

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

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

GETportal:users:readportal facemspIdempotent

Source: [object Object]

getRole reads one role.

NameInTypeRequiredDescription
clientIDpathstringYes
roleIDpathstringYes
StatusBodyDescription
200application/json, RoleViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:read.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session 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/portal/v1/orgs/<clientID>/roles/<roleID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

PATCHportal:users:manageportal facemsp

Source: [object Object]

patchRole edits a role (never the owner role).

NameInTypeRequiredDescription
clientIDpathstringYes
roleIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, RoleViewSuccess.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.

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. __Host-portal_session is a session cookie, so send it with every request.
curl -X PATCH 'https://depot.example.com/api/portal/v1/orgs/<clientID>/roles/<roleID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

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

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

DELETEportal:users:manageportal facemspIdempotent

Source: [object Object]

deleteRole deletes a custom role.

NameInTypeRequiredDescription
clientIDpathstringYes
roleIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:users:manage.
404application/problem+json, ProblemDetailsNo resource matches that id.
Terminal window
# Sign in first. __Host-portal_session 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/portal/v1/orgs/<clientID>/roles/<roleID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

POST /api/portal/v1/orgs/{clientID}/select

Section titled “POST /api/portal/v1/orgs/{clientID}/select”

POSTportal facemsp

Source: [object Object]

selectOrg remembers the switcher choice on the session.

It runs behind the org middleware, so only an organization the caller may use now is accepted.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
404application/problem+json, ProblemDetailsNo resource matches that id.
Terminal window
# Sign in first. __Host-portal_session is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/portal/v1/orgs/<clientID>/select' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-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.