Service Desk Partner API

Reading Tickets and Threads

Show customers their tickets in your own portal: the customer-visible conversation, the status label they would see, and ticket lists by requester or company.

These reads let your own customer portal show exactly what DevStride's portal would: the conversation without internal notes, and the status label customers see. Pair them with Webhooks so you read when something changed instead of polling.

Needs: read access to the tickets, as for any API read. An API key sees the organization's tickets as its owner does in DevStride.

The customer-visible conversation

Add visibility=public to the comment reads. Internal notes are left out; everything else is unchanged, including paging.

# Top-level comments on a ticket
curl "https://api.devstride.com/v1/organizations/$ORG_ID/item-comments?itemNumber=I123&visibility=public&limit=50" \
  -u "$DEVSTRIDE_API_KEY:$DEVSTRIDE_API_SECRET"

# Replies under one of them
curl "https://api.devstride.com/v1/organizations/$ORG_ID/item-comments/$COMMENT_ID/replies?visibility=public" \
  -u "$DEVSTRIDE_API_KEY:$DEVSTRIDE_API_SECRET"

Only public is accepted. A filter can narrow what you may read, never widen it.

The status your customer sees

Add includeCustomerStatus=true to a ticket read or a ticket list. Each ticket then carries customerStatus, the label the customer portal shows:

customerStatusShown to the customer as
openOpen
in_progressIn progress
awaiting_your_replyAwaiting your reply: staff wrote the last customer-visible message on an open ticket
solvedSolved
closedClosed

Ordinary work items carry customerStatus: null. Without the parameter the field is not included at all.

curl "https://api.devstride.com/v1/organizations/$ORG_ID/work-items/I123?includeCustomerStatus=true" \
  -u "$DEVSTRIDE_API_KEY:$DEVSTRIDE_API_SECRET"

The labels follow your organization's Service Desk status settings, so they match your portal.

Listing a company's or a customer's tickets

GET /items takes these filters, alone or combined, with includeCustomerStatus=true if you want the labels:

FilterMatches
requesterIdTickets of these requesters.
companyIdTickets raised for these companies: the company recorded on the ticket when its requester was attached. A ticket stays with that company if the requester later moves.
channel=apiTickets that came in through the API (also email, portal, sms).
curl "https://api.devstride.com/v1/organizations/$ORG_ID/items?itemType=workitem&companyId=$COMPANY_ID&includeCustomerStatus=true&limit=50" \
  -u "$DEVSTRIDE_API_KEY:$DEVSTRIDE_API_SECRET"