Skip to main content

Create Intake Ticket

POST 

/api/support/intake/tickets

Opens a ticket on the production desk for a person on your environment. The requester is the address in X-Support-Requester-Email — attached to the SKU.io account holding it when one does, and carried as an address and name when none does. The ticket lands on the tenant your origin tenant maps to (none, for an internal test account), is created open with SLA due dates from the policy for its priority, and the request body becomes its first public message.

Environment intake token

Called by another SKU environment (beta, demo, dev) on behalf of its users: authenticate with that environment's intake token and the origin headers described below — not with a Personal Access Token or a session.

The ticket is stamped with where it came from: environment (beta, demo or dev), origin_tenant_id, and origin_host from X-Support-Origin-Host; its source is intake.

Request body — send as multipart/form-data when including files

  • subject (required, string, max 255)
  • body (required, string, max 65000) — becomes the opening message
  • type (optional, string) — one of: bug, question, feature_request, billing
  • priority (optional, string, default medium) — one of: low, medium, high, urgent
  • visibility (optional, string, default tenant) — tenant (everyone at the company sees it) or requester (only the requester, plus participants and agents)
  • context (optional, object) — where the ticket was raised from. A fixed schema; unknown keys are dropped:
    • context.route (string, max 255), context.url (string, max 2048) — the page
    • context.record_type (string, max 100), context.record_id (string, 1-64 characters: letters, digits, _, -) — the record on that page. A recognised record_type (for example sales_order, purchase_order, product, customer, inbound_shipment) adds a record link to the ticket automatically
    • context.browser (string, max 512), context.viewport ("WIDTHxHEIGHT" or {width, height}), context.build (string, max 120)
    • context.tenant_id (string, max 100), context.pod (string, max 100), context.user ({id, email, name})
    • context.recent_errors[] (array, max 10) — each {at (max 40), method (max 10), url (max 2048), status (100-599), message (max 1000)}
    • context.sentry_event_ids[] (array, max 20, each max 64 characters)
    • context.breadcrumbs[] (array, max 200) — the trail of what the person did just before opening the ticket, oldest first. Each entry is {t (string, max 40 — when it happened), kind (required, one of route, click, xhr, error), label (string, max 200), detail (string, max 200, optional)}. Unknown keys are dropped, an unrecognised kind is rejected, and when more than 200 entries survive cleaning the newest 200 are kept
    • context.screenshot_attachment_id (integer, nullable), context.screenshot (boolean)
    • context.origin_host is set from the X-Support-Origin-Host header; anything you send in it is replaced
  • cc[] (optional, array, max 20 emails) — additional people to notify on replies
  • attachments[] (optional, array of files, max 10, each up to the desk's attachment size limit)

The response is the new ticket, identical to the production customer response plus the three origin fields.

Authentication: the environment token as Authorization: Bearer, plus the X-Support-* identity headers described on the Intake folder. There is no session and no tenant context. An unknown token, or a token presented with another environment, is refused with 403; incomplete identity headers are 422.

Request

Responses

Created

Response Headers
    Content-Type