Service Desk Partner API

Attachments and a Full Round Trip

Attach files to API messages, and see how webhooks and the Partner API fit together from a customer's first email to a delivered reply.

Attachments

The message routes take HTML only; there is no attachment field. To include a file:

  1. Upload it with the existing upload operations (getOrganizationUploadUrl, then createAssetItem), or with the MCP server's upload_attachment and attach_uploaded_file tools.
  2. Put the returned file URL in your message HTML as a link, for example <p><a href="https://media.devstride.com/…/invoice.pdf">invoice.pdf</a></p>.

The ticket's conversation shows it as a link, exactly as attachments on an emailed reply appear.

A full round trip

How a partner that owns the customer's inbox and portal uses everything together:

Customer emails your support address
  └─ your processor → POST /service-desk/requests            (sentAt, externalId)
       └─ DevStride opens the ticket, starts SLA clocks
            └─ webhook item.created → your systems

Staff reply in DevStride (or your tool → POST …/staff-replies)
  └─ webhook comment.created (visibility public, commentId) → your tool
       └─ your tool emails the customer
            └─ POST /service-desk/comments/{commentId}/delivery-receipt   (sent | failed)
                 └─ staff see "Delivered by your support tool" under the reply

Customer replies to your email
  └─ your processor → POST …/items/{itemNumber}/requester-replies   (sentAt, externalId)
       └─ next-response clock restarts; webhook comment.created → your systems

Your portal shows the ticket
  └─ GET /work-items/{itemNumber}?includeCustomerStatus=true
  └─ GET /item-comments?itemNumber=…&visibility=public

Use the externalId of each message in your own system on every write, so a retry never posts twice.