Skip to content

Depot portalwork

Registers the portal’s quote, project, approval and request routes (contract 8.2).

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/portal/v1/orgs/{clientID}/approvals

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

GETportal:approvals:readportal facemspIdempotent

Source: [object Object]

listApprovals is the inbox: every source in one list, newest first.

status=open (default) | decided | closed | all; source=<source>; mine=true keeps the requests waiting on the caller.

NameInTypeRequiredDescription
clientIDpathstringYes
minequerystringNo
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
sourcequerystringNo
statusquerystringNo
StatusBodyDescription
200application/json, ApprovalListSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:approvals:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
countsrequiredApprovalCounts

ApprovalCounts are the inbox badges.

counts.approvalsrequiredinteger
counts.awaitingMerequiredinteger
counts.openrequiredinteger
counts.openMilestonesrequiredinteger
counts.openQuotesrequiredinteger
itemsrequiredarray of ApprovalView
items[].amountCentsinteger or null

int64.

items[].awaitingrequiredarray of ApprovalAwaitingView
items[].awaiting[].memberIdrequiredstring
items[].awaiting[].namerequiredstring
items[].bodyrequiredstring
items[].canDeciderequiredboolean
items[].canRespondrequiredboolean
items[].consentTextrequiredstring
items[].consentVersionrequiredinteger
items[].currencystring or null
items[].dueAtstring (date-time) or null
items[].idrequiredstring
items[].kindrequiredstring
items[].projectIdstring or null
items[].quorumrequiredstring
items[].raisedAtrequiredstring (date-time)
items[].raisedByrequiredApprovalActorView

ApprovalActorView is who raised a request.

items[].raisedBy.kindrequiredstring
items[].raisedBy.labelstring or null
items[].raisedBy.refrequiredstring
items[].resolvedAtstring (date-time) or null
items[].responsesrequiredarray of ApprovalResponseView
items[].responses[].commentstring or null
items[].responses[].decisionrequiredstring
items[].responses[].idrequiredstring
items[].responses[].memberIdrequiredstring
items[].responses[].memberNamerequiredstring
items[].responses[].respondedAtrequiredstring (date-time)
items[].responses[].signatureMethodrequiredstring
items[].responses[].signerNamerequiredstring
items[].routerequiredApprovalRouteView

ApprovalRouteView is who a request is routed to.

items[].route.kindrequiredstring
items[].route.memberIdsrequiredarray of string
items[].route.roleIdstring or null
items[].sourcerequiredstring
items[].sourceErrorstring or null
items[].sourceLabelstring or null
items[].sourceRefstring or null
items[].statusrequiredstring
items[].titlerequiredstring
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>/approvals?mine=<mine>&page=0&pageSize=0&source=<source>&status=<status>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

GET /api/portal/v1/orgs/{clientID}/approvals/{approvalID}

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

GETportal:approvals:readportal facemspIdempotent

Source: [object Object]

getApproval opens one request with its answers.

NameInTypeRequiredDescription
approvalIDpathstringYes
clientIDpathstringYes
StatusBodyDescription
200application/json, ApprovalViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:approvals:read.
404application/problem+json, ProblemDetailsNot found.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
amountCentsinteger or null

int64.

awaitingrequiredarray of ApprovalAwaitingView
awaiting[].memberIdrequiredstring
awaiting[].namerequiredstring
bodyrequiredstring
canDeciderequiredboolean
canRespondrequiredboolean
consentTextrequiredstring
consentVersionrequiredinteger
currencystring or null
dueAtstring (date-time) or null
idrequiredstring
kindrequiredstring
projectIdstring or null
quorumrequiredstring
raisedAtrequiredstring (date-time)
raisedByrequiredApprovalActorView

ApprovalActorView is who raised a request.

raisedBy.kindrequiredstring
raisedBy.labelstring or null
raisedBy.refrequiredstring
resolvedAtstring (date-time) or null
responsesrequiredarray of ApprovalResponseView
responses[].commentstring or null
responses[].decisionrequiredstring
responses[].idrequiredstring
responses[].memberIdrequiredstring
responses[].memberNamerequiredstring
responses[].respondedAtrequiredstring (date-time)
responses[].signatureMethodrequiredstring
responses[].signerNamerequiredstring
routerequiredApprovalRouteView

ApprovalRouteView is who a request is routed to.

route.kindrequiredstring
route.memberIdsrequiredarray of string
route.roleIdstring or null
sourcerequiredstring
sourceErrorstring or null
sourceLabelstring or null
sourceRefstring or null
statusrequiredstring
titlerequiredstring
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>/approvals/<approvalID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

POST /api/portal/v1/orgs/{clientID}/approvals/{approvalID}/respond

Section titled “POST /api/portal/v1/orgs/{clientID}/approvals/{approvalID}/respond”

POSTportal:approvals:respondportal facemsp

Source: [object Object]

respondApproval records the member’s signed answer and, when it decides the request, applies the outcome to the source and posts it back.

NameInTypeRequiredDescription
approvalIDpathstringYes
clientIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, ApprovalViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:approvals:respond.
404application/problem+json, ProblemDetailsNot found.
413application/problem+json, ProblemDetailsThat submission is too large.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
amountCentsinteger or null

int64.

awaitingrequiredarray of ApprovalAwaitingView
awaiting[].memberIdrequiredstring
awaiting[].namerequiredstring
bodyrequiredstring
canDeciderequiredboolean
canRespondrequiredboolean
consentTextrequiredstring
consentVersionrequiredinteger
currencystring or null
dueAtstring (date-time) or null
idrequiredstring
kindrequiredstring
projectIdstring or null
quorumrequiredstring
raisedAtrequiredstring (date-time)
raisedByrequiredApprovalActorView

ApprovalActorView is who raised a request.

raisedBy.kindrequiredstring
raisedBy.labelstring or null
raisedBy.refrequiredstring
resolvedAtstring (date-time) or null
responsesrequiredarray of ApprovalResponseView
responses[].commentstring or null
responses[].decisionrequiredstring
responses[].idrequiredstring
responses[].memberIdrequiredstring
responses[].memberNamerequiredstring
responses[].respondedAtrequiredstring (date-time)
responses[].signatureMethodrequiredstring
responses[].signerNamerequiredstring
routerequiredApprovalRouteView

ApprovalRouteView is who a request is routed to.

route.kindrequiredstring
route.memberIdsrequiredarray of string
route.roleIdstring or null
sourcerequiredstring
sourceErrorstring or null
sourceLabelstring or null
sourceRefstring or null
statusrequiredstring
titlerequiredstring
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>/approvals/<approvalID>/respond' \
-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}/projects

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

GETportal:projects:readportal facemspIdempotent

Source: [object Object]

listProjects lists the organization’s projects.

NameInTypeRequiredDescription
clientIDpathstringYes
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
StatusBodyDescription
200application/json, PagedResultPortalProjectSummarySuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:projects:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
itemsrequiredarray of PortalProjectSummary
items[].healthrequiredstring
items[].idrequiredstring
items[].namerequiredstring
items[].percentCompleterequiredinteger
items[].plannedEndOnstring or null
items[].plannedStartOnrequiredstring
items[].referencerequiredstring
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>/projects?page=0&pageSize=0' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

GET /api/portal/v1/orgs/{clientID}/projects/{projectID}

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

GETportal:projects:readportal facemspIdempotent

Source: [object Object]

getProject opens one project’s status page.

NameInTypeRequiredDescription
clientIDpathstringYes
projectIDpathstringYes
StatusBodyDescription
200application/json, PortalProjectViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:projects:read.
404application/problem+json, ProblemDetailsNot found.
500application/problem+json, ProblemDetailsCould not open this project.

200 response body

FieldTypeDescription
acceptancePublicProjectAcceptance

publicProjectAcceptance is what the signer is shown back about their own signature.

acceptance.certificateAvailablerequiredboolean
acceptance.signedAtrequiredstring (date-time)
acceptance.signerNamerequiredstring
acceptance.signerTitlerequiredstring
awaitingAcceptancerequiredarray of PublicAcceptanceMilestone
awaitingAcceptance[].amountCentsinteger or null

int64.

awaitingAcceptance[].currencyCoderequiredstring
awaitingAcceptance[].deliverablesrequiredarray of PublicProjectDeliverable
awaitingAcceptance[].deliverables[].completedAtstring (date-time) or null
awaitingAcceptance[].deliverables[].titlerequiredstring
awaitingAcceptance[].descriptionrequiredstring
awaitingAcceptance[].dueOnrequiredstring
awaitingAcceptance[].namerequiredstring
awaitingAcceptance[].phaseNamestring or null
awaitingAcceptance[].publicIdrequiredstring
brandingrequiredPublicQuoteBranding
branding.accentColorrequiredstring
branding.displayNamerequiredstring
branding.logoUrlstring or null
canAcceptrequiredboolean
consentTextstring
consentVersioninteger
currencyCoderequiredstring
declinedAtstring (date-time) or null
expiresAtstring (date-time) or null
idrequiredstring
kindrequiredstring
milestonePublicAcceptanceMilestone
milestone.amountCentsinteger or null

int64.

milestone.currencyCoderequiredstring
milestone.deliverablesrequiredarray of PublicProjectDeliverable
milestone.deliverables[].completedAtstring (date-time) or null
milestone.deliverables[].titlerequiredstring
milestone.descriptionrequiredstring
milestone.dueOnrequiredstring
milestone.namerequiredstring
milestone.phaseNamestring or null
milestone.publicIdrequiredstring
milestonesrequiredarray of PublicProjectMilestone
milestones[].acceptedAtstring (date-time) or null
milestones[].amountCentsinteger or null

int64.

milestones[].completedAtstring (date-time) or null
milestones[].dueOnrequiredstring
milestones[].namerequiredstring
milestones[].publicIdrequiredstring
milestones[].requiresAcceptancerequiredboolean
milestones[].statusrequiredstring
notesrequiredarray of PublicProjectNote
notes[].bodyrequiredstring
notes[].createdAtrequiredstring (date-time)
phasesrequiredarray of PublicProjectPhase
phases[].namerequiredstring
phases[].percentCompleterequiredinteger
phases[].plannedEndOnstring or null
phases[].plannedStartOnstring or null
phases[].statusrequiredstring
practicerequiredPublicQuotePractice
practice.contactEmailstring or null
projectrequiredPublicProjectHeader
project.healthrequiredstring
project.healthReasonrequiredstring
project.namerequiredstring
project.percentCompleterequiredinteger
project.plannedEndOnstring or null
project.plannedStartOnrequiredstring
project.referencerequiredstring
project.statusrequiredstring
recordIdrequiredstring
tasksrequiredarray of PublicProjectTask
tasks[].completedAtstring (date-time) or null
tasks[].phaseNamestring or null
tasks[].plannedDueOnstring or null
tasks[].statusrequiredstring
tasks[].titlerequiredstring
timeZonerequiredstring
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>/projects/<projectID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

POST /api/portal/v1/orgs/{clientID}/projects/{projectID}/milestones/{milestoneID}/accept

Section titled “POST /api/portal/v1/orgs/{clientID}/projects/{projectID}/milestones/{milestoneID}/accept”

POSTportal:projects:acceptportal facemsp

Source: [object Object]

acceptMilestone signs the milestone off as the member.

The answer is the project page as it now stands.

NameInTypeRequiredDescription
clientIDpathstringYes
milestoneIDpathstringYes
projectIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, PortalProjectViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:projects:accept.
404application/problem+json, ProblemDetailsNot found.
413application/problem+json, ProblemDetailsThat submission is too large.
500application/problem+json, ProblemDetailsCould not open this project.

200 response body

FieldTypeDescription
acceptancePublicProjectAcceptance

publicProjectAcceptance is what the signer is shown back about their own signature.

acceptance.certificateAvailablerequiredboolean
acceptance.signedAtrequiredstring (date-time)
acceptance.signerNamerequiredstring
acceptance.signerTitlerequiredstring
awaitingAcceptancerequiredarray of PublicAcceptanceMilestone
awaitingAcceptance[].amountCentsinteger or null

int64.

awaitingAcceptance[].currencyCoderequiredstring
awaitingAcceptance[].deliverablesrequiredarray of PublicProjectDeliverable
awaitingAcceptance[].deliverables[].completedAtstring (date-time) or null
awaitingAcceptance[].deliverables[].titlerequiredstring
awaitingAcceptance[].descriptionrequiredstring
awaitingAcceptance[].dueOnrequiredstring
awaitingAcceptance[].namerequiredstring
awaitingAcceptance[].phaseNamestring or null
awaitingAcceptance[].publicIdrequiredstring
brandingrequiredPublicQuoteBranding
branding.accentColorrequiredstring
branding.displayNamerequiredstring
branding.logoUrlstring or null
canAcceptrequiredboolean
consentTextstring
consentVersioninteger
currencyCoderequiredstring
declinedAtstring (date-time) or null
expiresAtstring (date-time) or null
idrequiredstring
kindrequiredstring
milestonePublicAcceptanceMilestone
milestone.amountCentsinteger or null

int64.

milestone.currencyCoderequiredstring
milestone.deliverablesrequiredarray of PublicProjectDeliverable
milestone.deliverables[].completedAtstring (date-time) or null
milestone.deliverables[].titlerequiredstring
milestone.descriptionrequiredstring
milestone.dueOnrequiredstring
milestone.namerequiredstring
milestone.phaseNamestring or null
milestone.publicIdrequiredstring
milestonesrequiredarray of PublicProjectMilestone
milestones[].acceptedAtstring (date-time) or null
milestones[].amountCentsinteger or null

int64.

milestones[].completedAtstring (date-time) or null
milestones[].dueOnrequiredstring
milestones[].namerequiredstring
milestones[].publicIdrequiredstring
milestones[].requiresAcceptancerequiredboolean
milestones[].statusrequiredstring
notesrequiredarray of PublicProjectNote
notes[].bodyrequiredstring
notes[].createdAtrequiredstring (date-time)
phasesrequiredarray of PublicProjectPhase
phases[].namerequiredstring
phases[].percentCompleterequiredinteger
phases[].plannedEndOnstring or null
phases[].plannedStartOnstring or null
phases[].statusrequiredstring
practicerequiredPublicQuotePractice
practice.contactEmailstring or null
projectrequiredPublicProjectHeader
project.healthrequiredstring
project.healthReasonrequiredstring
project.namerequiredstring
project.percentCompleterequiredinteger
project.plannedEndOnstring or null
project.plannedStartOnrequiredstring
project.referencerequiredstring
project.statusrequiredstring
recordIdrequiredstring
tasksrequiredarray of PublicProjectTask
tasks[].completedAtstring (date-time) or null
tasks[].phaseNamestring or null
tasks[].plannedDueOnstring or null
tasks[].statusrequiredstring
tasks[].titlerequiredstring
timeZonerequiredstring
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>/projects/<projectID>/milestones/<milestoneID>/accept' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

POST /api/portal/v1/orgs/{clientID}/projects/{projectID}/milestones/{milestoneID}/decline

Section titled “POST /api/portal/v1/orgs/{clientID}/projects/{projectID}/milestones/{milestoneID}/decline”

POSTportal:projects:acceptportal facemsp

Source: [object Object]

declineMilestone records the member’s no on the milestone; the reason reaches the project manager and is never echoed.

NameInTypeRequiredDescription
clientIDpathstringYes
milestoneIDpathstringYes
projectIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, PortalProjectViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:projects:accept.
404application/problem+json, ProblemDetailsNot found.
413application/problem+json, ProblemDetailsThat submission is too large.
500application/problem+json, ProblemDetailsCould not open this project.

200 response body

FieldTypeDescription
acceptancePublicProjectAcceptance

publicProjectAcceptance is what the signer is shown back about their own signature.

acceptance.certificateAvailablerequiredboolean
acceptance.signedAtrequiredstring (date-time)
acceptance.signerNamerequiredstring
acceptance.signerTitlerequiredstring
awaitingAcceptancerequiredarray of PublicAcceptanceMilestone
awaitingAcceptance[].amountCentsinteger or null

int64.

awaitingAcceptance[].currencyCoderequiredstring
awaitingAcceptance[].deliverablesrequiredarray of PublicProjectDeliverable
awaitingAcceptance[].deliverables[].completedAtstring (date-time) or null
awaitingAcceptance[].deliverables[].titlerequiredstring
awaitingAcceptance[].descriptionrequiredstring
awaitingAcceptance[].dueOnrequiredstring
awaitingAcceptance[].namerequiredstring
awaitingAcceptance[].phaseNamestring or null
awaitingAcceptance[].publicIdrequiredstring
brandingrequiredPublicQuoteBranding
branding.accentColorrequiredstring
branding.displayNamerequiredstring
branding.logoUrlstring or null
canAcceptrequiredboolean
consentTextstring
consentVersioninteger
currencyCoderequiredstring
declinedAtstring (date-time) or null
expiresAtstring (date-time) or null
idrequiredstring
kindrequiredstring
milestonePublicAcceptanceMilestone
milestone.amountCentsinteger or null

int64.

milestone.currencyCoderequiredstring
milestone.deliverablesrequiredarray of PublicProjectDeliverable
milestone.deliverables[].completedAtstring (date-time) or null
milestone.deliverables[].titlerequiredstring
milestone.descriptionrequiredstring
milestone.dueOnrequiredstring
milestone.namerequiredstring
milestone.phaseNamestring or null
milestone.publicIdrequiredstring
milestonesrequiredarray of PublicProjectMilestone
milestones[].acceptedAtstring (date-time) or null
milestones[].amountCentsinteger or null

int64.

milestones[].completedAtstring (date-time) or null
milestones[].dueOnrequiredstring
milestones[].namerequiredstring
milestones[].publicIdrequiredstring
milestones[].requiresAcceptancerequiredboolean
milestones[].statusrequiredstring
notesrequiredarray of PublicProjectNote
notes[].bodyrequiredstring
notes[].createdAtrequiredstring (date-time)
phasesrequiredarray of PublicProjectPhase
phases[].namerequiredstring
phases[].percentCompleterequiredinteger
phases[].plannedEndOnstring or null
phases[].plannedStartOnstring or null
phases[].statusrequiredstring
practicerequiredPublicQuotePractice
practice.contactEmailstring or null
projectrequiredPublicProjectHeader
project.healthrequiredstring
project.healthReasonrequiredstring
project.namerequiredstring
project.percentCompleterequiredinteger
project.plannedEndOnstring or null
project.plannedStartOnrequiredstring
project.referencerequiredstring
project.statusrequiredstring
recordIdrequiredstring
tasksrequiredarray of PublicProjectTask
tasks[].completedAtstring (date-time) or null
tasks[].phaseNamestring or null
tasks[].plannedDueOnstring or null
tasks[].statusrequiredstring
tasks[].titlerequiredstring
timeZonerequiredstring
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>/projects/<projectID>/milestones/<milestoneID>/decline' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

GETportal:quotes:readportal facemspIdempotent

Source: [object Object]

listQuotes lists the organization’s quotes, newest first: only the revision in play, never a draft, and never a revision a newer one replaced.

NameInTypeRequiredDescription
clientIDpathstringYes
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
statusquerystringNo
StatusBodyDescription
200application/json, PagedResultPortalQuoteSummarySuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:quotes:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
itemsrequiredarray of PortalQuoteSummary
items[].canDeciderequiredboolean
items[].currencyCoderequiredstring
items[].decidedAtstring (date-time) or null
items[].dueOnAcceptanceCentsrequiredinteger

int64.

items[].expiresOnrequiredstring
items[].idrequiredstring
items[].monthlyRecurringCentsrequiredinteger

int64.

items[].numberrequiredstring
items[].revisionrequiredinteger
items[].sentAtstring (date-time) or null
items[].statusrequiredstring
items[].titlerequiredstring
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>/quotes?page=0&pageSize=0&status=<status>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

GET /api/portal/v1/orgs/{clientID}/quotes/{quoteID}

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

GETportal:quotes:readportal facemspIdempotent

Source: [object Object]

getQuote opens one quote: the current revision, or a superseded one marked as such with a pointer to its replacement.

NameInTypeRequiredDescription
clientIDpathstringYes
quoteIDpathstringYes
StatusBodyDescription
200application/json, PortalQuoteViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:quotes:read.
404application/problem+json, ProblemDetailsNot found.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
billedOnMilestonesCentsrequiredinteger

int64.

brandingrequiredPublicQuoteBranding
branding.accentColorrequiredstring
branding.displayNamerequiredstring
branding.logoUrlstring or null
canDeciderequiredboolean
consentTextrequiredstring
consentVersionrequiredinteger
contactNamerequiredstring
coverLetterrequiredstring
currencyCoderequiredstring
currentIdstring or null
declinedAtstring (date-time) or null
defaultTotalsrequiredPublicQuoteTotals

publicQuoteTotals is store.QuoteTotals WITHOUT CostCents and MarginBasisPoints.

defaultTotals.contractValueCentsrequiredinteger

int64.

defaultTotals.discountOneTimeCentsrequiredinteger

int64.

defaultTotals.discountRecurringCentsrequiredinteger

int64.

defaultTotals.dueOnAcceptanceCentsrequiredinteger

int64.

defaultTotals.monthlyRecurringCentsrequiredinteger

int64.

defaultTotals.oneTimeSubtotalCentsrequiredinteger

int64.

defaultTotals.recurringSubtotalCentsrequiredinteger

int64.

defaultTotals.taxOneTimeCentsrequiredinteger

int64.

defaultTotals.taxRecurringCentsrequiredinteger

int64.

depositQuoteDepositView

quoteDepositView is what an on_delivery quote with a deposit charges on acceptance (e2e B33): the deposit PRE-TAX, the tax on it, and everything raised on acceptance, tax included (the lines that do not ship plus the deposit).

deposit.depositCentsrequiredinteger

int64.

deposit.depositTaxCentsrequiredinteger

int64.

deposit.dueOnAcceptanceCentsrequiredinteger

int64.

documentsrequiredPublicQuoteDocuments
documents.currentrequiredstring
expiresAtrequiredstring (date-time)
expiresOnrequiredstring
monthlyLabelrequiredstring
numberrequiredstring
pdfAvailablerequiredboolean
portalStatusrequiredstring
practicerequiredPublicQuotePractice
practice.contactEmailstring or null
recipientNamerequiredstring
recordIdrequiredstring
requireCountersignrequiredboolean
revisionrequiredinteger
sectionsrequiredarray of PublicQuoteSection
sections[].descriptionrequiredstring
sections[].kindrequiredstring
sections[].linesrequiredarray of PublicQuoteLine
sections[].lines[].acceptedQuantitystring or null
sections[].lines[].adjustablerequiredboolean
sections[].lines[].billOnMilestonesrequiredboolean
sections[].lines[].defaultSelectedrequiredboolean
sections[].lines[].descriptionrequiredstring
sections[].lines[].discountBprequiredinteger
sections[].lines[].includedMinutesrequiredinteger
sections[].lines[].kindrequiredstring
sections[].lines[].maxQuantitystring or null
sections[].lines[].minQuantitystring or null
sections[].lines[].optionalrequiredboolean
sections[].lines[].publicIdrequiredstring
sections[].lines[].quantityrequiredstring
sections[].lines[].selectedboolean or null
sections[].lines[].taxablerequiredboolean
sections[].lines[].unitrequiredstring
sections[].lines[].unitPriceCentsrequiredinteger

int64.

sections[].publicIdrequiredstring
sections[].titlerequiredstring
signaturePublicQuoteSignature
signature.countersignrequiredstring
signature.countersignedAtstring (date-time) or null
signature.signedAtrequiredstring (date-time)
signature.signerNamerequiredstring
signature.signerTitlerequiredstring
signature.totalsrequiredPublicQuoteTotals

publicQuoteTotals is store.QuoteTotals WITHOUT CostCents and MarginBasisPoints.

signature.totals.contractValueCentsrequiredinteger

int64.

signature.totals.discountOneTimeCentsrequiredinteger

int64.

signature.totals.discountRecurringCentsrequiredinteger

int64.

signature.totals.dueOnAcceptanceCentsrequiredinteger

int64.

signature.totals.monthlyRecurringCentsrequiredinteger

int64.

signature.totals.oneTimeSubtotalCentsrequiredinteger

int64.

signature.totals.recurringSubtotalCentsrequiredinteger

int64.

signature.totals.taxOneTimeCentsrequiredinteger

int64.

signature.totals.taxRecurringCentsrequiredinteger

int64.

statusrequiredstring
taxRateBasisPointsrequiredinteger
termMonthsrequiredinteger
termsrequiredstring
timeZonerequiredstring
titlerequiredstring
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>/quotes/<quoteID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

POST /api/portal/v1/orgs/{clientID}/quotes/{quoteID}/accept

Section titled “POST /api/portal/v1/orgs/{clientID}/quotes/{quoteID}/accept”

POSTportal:quotes:approveportal facemsp

Source: [object Object]

acceptQuote signs the quote as the member: the same validation, pricing and record as the public link, with the member named on the signature.

NameInTypeRequiredDescription
clientIDpathstringYes
quoteIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, PortalQuoteViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:quotes:approve.
404application/problem+json, ProblemDetailsNot found.
413application/problem+json, ProblemDetailsThat submission is too large.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
billedOnMilestonesCentsrequiredinteger

int64.

brandingrequiredPublicQuoteBranding
branding.accentColorrequiredstring
branding.displayNamerequiredstring
branding.logoUrlstring or null
canDeciderequiredboolean
consentTextrequiredstring
consentVersionrequiredinteger
contactNamerequiredstring
coverLetterrequiredstring
currencyCoderequiredstring
currentIdstring or null
declinedAtstring (date-time) or null
defaultTotalsrequiredPublicQuoteTotals

publicQuoteTotals is store.QuoteTotals WITHOUT CostCents and MarginBasisPoints.

defaultTotals.contractValueCentsrequiredinteger

int64.

defaultTotals.discountOneTimeCentsrequiredinteger

int64.

defaultTotals.discountRecurringCentsrequiredinteger

int64.

defaultTotals.dueOnAcceptanceCentsrequiredinteger

int64.

defaultTotals.monthlyRecurringCentsrequiredinteger

int64.

defaultTotals.oneTimeSubtotalCentsrequiredinteger

int64.

defaultTotals.recurringSubtotalCentsrequiredinteger

int64.

defaultTotals.taxOneTimeCentsrequiredinteger

int64.

defaultTotals.taxRecurringCentsrequiredinteger

int64.

depositQuoteDepositView

quoteDepositView is what an on_delivery quote with a deposit charges on acceptance (e2e B33): the deposit PRE-TAX, the tax on it, and everything raised on acceptance, tax included (the lines that do not ship plus the deposit).

deposit.depositCentsrequiredinteger

int64.

deposit.depositTaxCentsrequiredinteger

int64.

deposit.dueOnAcceptanceCentsrequiredinteger

int64.

documentsrequiredPublicQuoteDocuments
documents.currentrequiredstring
expiresAtrequiredstring (date-time)
expiresOnrequiredstring
monthlyLabelrequiredstring
numberrequiredstring
pdfAvailablerequiredboolean
portalStatusrequiredstring
practicerequiredPublicQuotePractice
practice.contactEmailstring or null
recipientNamerequiredstring
recordIdrequiredstring
requireCountersignrequiredboolean
revisionrequiredinteger
sectionsrequiredarray of PublicQuoteSection
sections[].descriptionrequiredstring
sections[].kindrequiredstring
sections[].linesrequiredarray of PublicQuoteLine
sections[].lines[].acceptedQuantitystring or null
sections[].lines[].adjustablerequiredboolean
sections[].lines[].billOnMilestonesrequiredboolean
sections[].lines[].defaultSelectedrequiredboolean
sections[].lines[].descriptionrequiredstring
sections[].lines[].discountBprequiredinteger
sections[].lines[].includedMinutesrequiredinteger
sections[].lines[].kindrequiredstring
sections[].lines[].maxQuantitystring or null
sections[].lines[].minQuantitystring or null
sections[].lines[].optionalrequiredboolean
sections[].lines[].publicIdrequiredstring
sections[].lines[].quantityrequiredstring
sections[].lines[].selectedboolean or null
sections[].lines[].taxablerequiredboolean
sections[].lines[].unitrequiredstring
sections[].lines[].unitPriceCentsrequiredinteger

int64.

sections[].publicIdrequiredstring
sections[].titlerequiredstring
signaturePublicQuoteSignature
signature.countersignrequiredstring
signature.countersignedAtstring (date-time) or null
signature.signedAtrequiredstring (date-time)
signature.signerNamerequiredstring
signature.signerTitlerequiredstring
signature.totalsrequiredPublicQuoteTotals

publicQuoteTotals is store.QuoteTotals WITHOUT CostCents and MarginBasisPoints.

signature.totals.contractValueCentsrequiredinteger

int64.

signature.totals.discountOneTimeCentsrequiredinteger

int64.

signature.totals.discountRecurringCentsrequiredinteger

int64.

signature.totals.dueOnAcceptanceCentsrequiredinteger

int64.

signature.totals.monthlyRecurringCentsrequiredinteger

int64.

signature.totals.oneTimeSubtotalCentsrequiredinteger

int64.

signature.totals.recurringSubtotalCentsrequiredinteger

int64.

signature.totals.taxOneTimeCentsrequiredinteger

int64.

signature.totals.taxRecurringCentsrequiredinteger

int64.

statusrequiredstring
taxRateBasisPointsrequiredinteger
termMonthsrequiredinteger
termsrequiredstring
timeZonerequiredstring
titlerequiredstring
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>/quotes/<quoteID>/accept' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b '__Host-portal_session=<portal-session>' \
--data '"string"'

POST /api/portal/v1/orgs/{clientID}/quotes/{quoteID}/decline

Section titled “POST /api/portal/v1/orgs/{clientID}/quotes/{quoteID}/decline”

POSTportal:quotes:approveportal facemsp

Source: [object Object]

declineQuote records the member’s no.

The reason reaches the MSP and is never echoed back.

NameInTypeRequiredDescription
clientIDpathstringYes
quoteIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
200application/json, PortalQuoteViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:quotes:approve.
404application/problem+json, ProblemDetailsNot found.
413application/problem+json, ProblemDetailsThat submission is too large.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
billedOnMilestonesCentsrequiredinteger

int64.

brandingrequiredPublicQuoteBranding
branding.accentColorrequiredstring
branding.displayNamerequiredstring
branding.logoUrlstring or null
canDeciderequiredboolean
consentTextrequiredstring
consentVersionrequiredinteger
contactNamerequiredstring
coverLetterrequiredstring
currencyCoderequiredstring
currentIdstring or null
declinedAtstring (date-time) or null
defaultTotalsrequiredPublicQuoteTotals

publicQuoteTotals is store.QuoteTotals WITHOUT CostCents and MarginBasisPoints.

defaultTotals.contractValueCentsrequiredinteger

int64.

defaultTotals.discountOneTimeCentsrequiredinteger

int64.

defaultTotals.discountRecurringCentsrequiredinteger

int64.

defaultTotals.dueOnAcceptanceCentsrequiredinteger

int64.

defaultTotals.monthlyRecurringCentsrequiredinteger

int64.

defaultTotals.oneTimeSubtotalCentsrequiredinteger

int64.

defaultTotals.recurringSubtotalCentsrequiredinteger

int64.

defaultTotals.taxOneTimeCentsrequiredinteger

int64.

defaultTotals.taxRecurringCentsrequiredinteger

int64.

depositQuoteDepositView

quoteDepositView is what an on_delivery quote with a deposit charges on acceptance (e2e B33): the deposit PRE-TAX, the tax on it, and everything raised on acceptance, tax included (the lines that do not ship plus the deposit).

deposit.depositCentsrequiredinteger

int64.

deposit.depositTaxCentsrequiredinteger

int64.

deposit.dueOnAcceptanceCentsrequiredinteger

int64.

documentsrequiredPublicQuoteDocuments
documents.currentrequiredstring
expiresAtrequiredstring (date-time)
expiresOnrequiredstring
monthlyLabelrequiredstring
numberrequiredstring
pdfAvailablerequiredboolean
portalStatusrequiredstring
practicerequiredPublicQuotePractice
practice.contactEmailstring or null
recipientNamerequiredstring
recordIdrequiredstring
requireCountersignrequiredboolean
revisionrequiredinteger
sectionsrequiredarray of PublicQuoteSection
sections[].descriptionrequiredstring
sections[].kindrequiredstring
sections[].linesrequiredarray of PublicQuoteLine
sections[].lines[].acceptedQuantitystring or null
sections[].lines[].adjustablerequiredboolean
sections[].lines[].billOnMilestonesrequiredboolean
sections[].lines[].defaultSelectedrequiredboolean
sections[].lines[].descriptionrequiredstring
sections[].lines[].discountBprequiredinteger
sections[].lines[].includedMinutesrequiredinteger
sections[].lines[].kindrequiredstring
sections[].lines[].maxQuantitystring or null
sections[].lines[].minQuantitystring or null
sections[].lines[].optionalrequiredboolean
sections[].lines[].publicIdrequiredstring
sections[].lines[].quantityrequiredstring
sections[].lines[].selectedboolean or null
sections[].lines[].taxablerequiredboolean
sections[].lines[].unitrequiredstring
sections[].lines[].unitPriceCentsrequiredinteger

int64.

sections[].publicIdrequiredstring
sections[].titlerequiredstring
signaturePublicQuoteSignature
signature.countersignrequiredstring
signature.countersignedAtstring (date-time) or null
signature.signedAtrequiredstring (date-time)
signature.signerNamerequiredstring
signature.signerTitlerequiredstring
signature.totalsrequiredPublicQuoteTotals

publicQuoteTotals is store.QuoteTotals WITHOUT CostCents and MarginBasisPoints.

signature.totals.contractValueCentsrequiredinteger

int64.

signature.totals.discountOneTimeCentsrequiredinteger

int64.

signature.totals.discountRecurringCentsrequiredinteger

int64.

signature.totals.dueOnAcceptanceCentsrequiredinteger

int64.

signature.totals.monthlyRecurringCentsrequiredinteger

int64.

signature.totals.oneTimeSubtotalCentsrequiredinteger

int64.

signature.totals.recurringSubtotalCentsrequiredinteger

int64.

signature.totals.taxOneTimeCentsrequiredinteger

int64.

signature.totals.taxRecurringCentsrequiredinteger

int64.

statusrequiredstring
taxRateBasisPointsrequiredinteger
termMonthsrequiredinteger
termsrequiredstring
timeZonerequiredstring
titlerequiredstring
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>/quotes/<quoteID>/decline' \
-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}/quotes/{quoteID}/pdf

Section titled “GET /api/portal/v1/orgs/{clientID}/quotes/{quoteID}/pdf”

GETportal:quotes:readportal 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]

getQuotePdf serves the quote’s current document: the executed copy, else the signed one, else the one that was sent.

NameInTypeRequiredDescription
clientIDpathstringYes
quoteIDpathstringYes
StatusBodyDescription
200application/octet-stream, string (binary)Success. The body shape was not resolved; see x-outpost-unresolved.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:quotes:read.
404application/problem+json, ProblemDetailsNot found.
500application/problem+json, ProblemDetailsThe request failed.
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>/quotes/<quoteID>/pdf' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

GETportal:requests:readportal facemspIdempotent

Source: [object Object]

listRequests lists the organization’s requests, newest first.

NameInTypeRequiredDescription
clientIDpathstringYes
kindquerystringNo
StatusBodyDescription
200application/json, array of PortalRequestViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:requests:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
[].accessEndsAtstring (date-time) or null
[].completedAtstring (date-time) or null
[].effectiveAtstring (date-time) or null
[].formrequiredRequestForm

RequestForm is the request's form (contract 15: name, email, start/end date, equipment, notes).

[].form.devicesarray of RequestDevice
[].form.devices[].actionrequiredstring
[].form.devices[].agentIdstring
[].form.devices[].descriptionrequiredstring
[].form.emailrequiredstring
[].form.endDatestring
[].form.namerequiredstring
[].form.notesstring
[].form.startDatestring
[].idrequiredstring
[].kindrequiredstring
[].rowVersionrequiredinteger

int64.

[].statusrequiredstring
[].submittedAtrequiredstring (date-time)
[].submittedByrequiredApprovalActorView

ApprovalActorView is who raised a request.

[].submittedBy.kindrequiredstring
[].submittedBy.labelstring or null
[].submittedBy.refrequiredstring
[].targetMemberIdstring or null
[].targetNamedUserIdstring or null
[].ticketIdstring or null
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>/requests?kind=<kind>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

POSTportal facemsp

Source: [object Object]

createRequest submits an onboarding or offboarding request and opens its ticket.

The kind decides the permission: portal:requests:onboard, or portal:requests:offboard (sensitive: it ends somebody’s access).

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

The body is any.

StatusBodyDescription
201application/json, PortalRequestViewCreated.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
404application/problem+json, ProblemDetailsNo resource matches that id.
413application/problem+json, ProblemDetailsThat submission is too large.
500application/problem+json, ProblemDetailsThe request failed.

201 response body

FieldTypeDescription
accessEndsAtstring (date-time) or null
completedAtstring (date-time) or null
effectiveAtstring (date-time) or null
formrequiredRequestForm

RequestForm is the request's form (contract 15: name, email, start/end date, equipment, notes).

form.devicesarray of RequestDevice
form.devices[].actionrequiredstring
form.devices[].agentIdstring
form.devices[].descriptionrequiredstring
form.emailrequiredstring
form.endDatestring
form.namerequiredstring
form.notesstring
form.startDatestring
idrequiredstring
kindrequiredstring
rowVersionrequiredinteger

int64.

statusrequiredstring
submittedAtrequiredstring (date-time)
submittedByrequiredApprovalActorView

ApprovalActorView is who raised a request.

submittedBy.kindrequiredstring
submittedBy.labelstring or null
submittedBy.refrequiredstring
targetMemberIdstring or null
targetNamedUserIdstring or null
ticketIdstring or null
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>/requests' \
-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}/requests/{requestID}

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

GETportal:requests:readportal facemspIdempotent

Source: [object Object]

getRequest opens one request.

NameInTypeRequiredDescription
clientIDpathstringYes
requestIDpathstringYes
StatusBodyDescription
200application/json, PortalRequestViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:requests:read.
404application/problem+json, ProblemDetailsNot found.
500application/problem+json, ProblemDetailsThe request failed.

200 response body

FieldTypeDescription
accessEndsAtstring (date-time) or null
completedAtstring (date-time) or null
effectiveAtstring (date-time) or null
formrequiredRequestForm

RequestForm is the request's form (contract 15: name, email, start/end date, equipment, notes).

form.devicesarray of RequestDevice
form.devices[].actionrequiredstring
form.devices[].agentIdstring
form.devices[].descriptionrequiredstring
form.emailrequiredstring
form.endDatestring
form.namerequiredstring
form.notesstring
form.startDatestring
idrequiredstring
kindrequiredstring
rowVersionrequiredinteger

int64.

statusrequiredstring
submittedAtrequiredstring (date-time)
submittedByrequiredApprovalActorView

ApprovalActorView is who raised a request.

submittedBy.kindrequiredstring
submittedBy.labelstring or null
submittedBy.refrequiredstring
targetMemberIdstring or null
targetNamedUserIdstring or null
ticketIdstring or null
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>/requests/<requestID>' \
-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.