Skip to content

Depot portal tickets

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}/tickets

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

GETportal:tickets:read_ownportal facemspIdempotent

Source: [object Object]

listTickets is the member’s tickets, newest activity first.

?state=open keeps the ones still being worked, ?state=closed the resolved and closed. ?mine=true narrows a read_all holder to their own (the read_own scope), and ?q= matches the ticket reference.

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

200 response body

FieldTypeDescription
itemsrequiredarray of TicketSummary
items[].categorystring or null
items[].createdAtrequiredstring (date-time)
items[].endpointTicketEndpointView

TicketEndpointView is the device a ticket is about.

items[].endpoint.agentIdrequiredstring
items[].endpoint.namerequiredstring
items[].idrequiredstring
items[].minerequiredboolean
items[].priorityrequiredstring
items[].referencerequiredstring
items[].requesterNamerequiredstring
items[].resolvedAtstring (date-time) or null
items[].staterequiredstring
items[].statusNamerequiredstring
items[].subjectrequiredstring
items[].updatedAtrequiredstring (date-time)
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>/tickets?mine=<mine>&page=<page>&pageSize=<pageSize>&q=<q>&state=<state>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

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

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

POSTportal:tickets:createportal facemsp

Source: [object Object]

createTicket opens a ticket for the member through the desk’s own create path: the requester is their linked person, else their address.

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

The body is any.

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

201 response body

FieldTypeDescription
categorystring or null
createdAtrequiredstring (date-time)
endpointTicketEndpointView

TicketEndpointView is the device a ticket is about.

endpoint.agentIdrequiredstring
endpoint.namerequiredstring
idrequiredstring
messagesrequiredarray of TicketMessageView
messages[].attachmentsrequiredarray of TicketAttachmentView
messages[].attachments[].contentTyperequiredstring
messages[].attachments[].downloadUrlrequiredstring
messages[].attachments[].fileNamerequiredstring
messages[].attachments[].idrequiredstring
messages[].attachments[].sizeBytesrequiredinteger

int64.

messages[].authorKindrequiredstring
messages[].authorNamerequiredstring
messages[].bodyrequiredstring
messages[].createdAtrequiredstring (date-time)
messages[].idrequiredstring
minerequiredboolean
priorityrequiredstring
referencerequiredstring
requesterNamerequiredstring
resolvedAtstring (date-time) or null
staterequiredstring
statusNamerequiredstring
subjectrequiredstring
updatedAtrequiredstring (date-time)
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>/tickets' \
-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}/tickets/{ticketID}

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

GETportal:tickets:read_ownportal facemspIdempotent

Source: [object Object]

Get ticket

NameInTypeRequiredDescription
clientIDpathstringYes
ticketIDpathstringYes
StatusBodyDescription
200application/json, TicketDetailSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:tickets:read_own.
404application/problem+json, ProblemDetailsNo resource matches that id.

200 response body

FieldTypeDescription
categorystring or null
createdAtrequiredstring (date-time)
endpointTicketEndpointView

TicketEndpointView is the device a ticket is about.

endpoint.agentIdrequiredstring
endpoint.namerequiredstring
idrequiredstring
messagesrequiredarray of TicketMessageView
messages[].attachmentsrequiredarray of TicketAttachmentView
messages[].attachments[].contentTyperequiredstring
messages[].attachments[].downloadUrlrequiredstring
messages[].attachments[].fileNamerequiredstring
messages[].attachments[].idrequiredstring
messages[].attachments[].sizeBytesrequiredinteger

int64.

messages[].authorKindrequiredstring
messages[].authorNamerequiredstring
messages[].bodyrequiredstring
messages[].createdAtrequiredstring (date-time)
messages[].idrequiredstring
minerequiredboolean
priorityrequiredstring
referencerequiredstring
requesterNamerequiredstring
resolvedAtstring (date-time) or null
staterequiredstring
statusNamerequiredstring
subjectrequiredstring
updatedAtrequiredstring (date-time)
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>/tickets/<ticketID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

POST /api/portal/v1/orgs/{clientID}/tickets/{ticketID}/attachments

Section titled “POST /api/portal/v1/orgs/{clientID}/tickets/{ticketID}/attachments”

POSTportal:tickets:createportal facemsp

Source: [object Object]

uploadTicketAttachment takes one file as the raw body (?fileName=, and ?messageId= naming the reply it rides on, required), with the console’s ceiling and storage pipeline.

NameInTypeRequiredDescription
clientIDpathstringYes
ticketIDpathstringYes
fileNamequerystringNo
messageIdquerystringNo
StatusBodyDescription
201application/json, TicketAttachmentViewCreated.
400NoneThe request was refused.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:tickets:create.
404application/problem+json, ProblemDetailsNo resource matches that id.

201 response body

FieldTypeDescription
contentTyperequiredstring
downloadUrlrequiredstring
fileNamerequiredstring
idrequiredstring
sizeBytesrequiredinteger

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>/tickets/<ticketID>/attachments?fileName=<fileName>&messageId=<messageId>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

GET /api/portal/v1/orgs/{clientID}/tickets/{ticketID}/attachments/{attachmentID}

Section titled “GET /api/portal/v1/orgs/{clientID}/tickets/{ticketID}/attachments/{attachmentID}”

GETportal:tickets:read_ownportal 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]

downloadTicketAttachment streams a file on a public reply of a ticket the member may see.

Always a download, never rendered: a generic type, attachment disposition and nosniff, as on the console.

NameInTypeRequiredDescription
attachmentIDpathstringYes
clientIDpathstringYes
ticketIDpathstringYes
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:tickets:read_own.
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>/tickets/<ticketID>/attachments/<attachmentID>' \
-H 'X-Csrf-Token: <portal-csrf>' \
-H 'Accept: application/json' \
-b '__Host-portal_session=<portal-session>'

POST /api/portal/v1/orgs/{clientID}/tickets/{ticketID}/replies

Section titled “POST /api/portal/v1/orgs/{clientID}/tickets/{ticketID}/replies”

POSTportal:tickets:createportal facemsp

Source: [object Object]

replyToTicket posts a public reply from the member.

NameInTypeRequiredDescription
clientIDpathstringYes
ticketIDpathstringYes

Required, sent as application/json.

The body is any.

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

201 response body

FieldTypeDescription
attachmentsrequiredarray of TicketAttachmentView
attachments[].contentTyperequiredstring
attachments[].downloadUrlrequiredstring
attachments[].fileNamerequiredstring
attachments[].idrequiredstring
attachments[].sizeBytesrequiredinteger

int64.

authorKindrequiredstring
authorNamerequiredstring
bodyrequiredstring
createdAtrequiredstring (date-time)
idrequiredstring
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>/tickets/<ticketID>/replies' \
-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}/tickets/options

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

GETportal:tickets:createportal facemspIdempotent

Source: [object Object]

ticketOptions is what the new-ticket form can choose from: categories, the priorities and the devices the member can see.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, TicketOptionsSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold portal:tickets:create.
404application/problem+json, ProblemDetailsNo resource matches that id.

200 response body

FieldTypeDescription
categoriesrequiredarray of TicketCategoryOption
categories[].coderequiredstring
categories[].namerequiredstring
categories[].subcategoriesarray of TicketCategoryOption
categories[].subcategories[].coderequiredstring
categories[].subcategories[].namerequiredstring
categories[].subcategories[].subcategoriesarray of TicketCategoryOption
endpointsrequiredarray of TicketEndpointView
endpoints[].agentIdrequiredstring
endpoints[].namerequiredstring
maxAttachmentBytesrequiredinteger

int64.

prioritiesrequiredarray 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>/tickets/options' \
-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.