Skip to main content

Support Tickets

Support Tickets let users submit help requests from the social frontend and let admins manage and reply to them in the Admin Panel. The feature is available when the supportTickets license feature is enabled.

User side (frontend)

  • Where: Social app → SettingsTicket (create new ticket, list my tickets, open ticket detail)
  • Actions: Create ticket (subject, description, optional attachments), view ticket detail, add comments/replies
  • Routes (frontend): e.g. /settings/ticket, /settings/ticket/new, /settings/ticket/:ticketId

Admin side (admin panel)

  • Where: Admin Panel → Support Tickets (sidebar; visible when supportTickets is enabled)
  • Routes: /tickets (list), /tickets/:id (detail)

Ticket list (/tickets)

  • API: GET /api/tickets?page=1&pageSize=20&status=...
  • Response: { success, data: { tickets, totalCount, hasMore } }
  • Filters: Status (New, InProgress, Resolved, Closed), search by subject/description/ID (client-side filter)
  • Actions: View ticket (navigate to /tickets/:id), Start Progress (New → In Progress, assigns current admin), Mark Resolved (In Progress → Resolved), Close (Resolved → Closed)

Ticket detail (/tickets/:id)

  • API: GET /api/tickets/:id
  • Response: Ticket with id, subject, description, attachmentUrls, department, userId, status, createdAt, updatedAt, resolvedAt, closedAt, assignedToUserId
  • Comments: GET /api/ticket-comments/ticket/:ticketId?page=1&pageSize=50; replies: GET /api/ticket-comments/:commentId/replies
  • Add admin reply: POST /api/ticket-comments with { ticketId, text, parentCommentId?, attachmentUrls? }
  • Update status: PUT /api/tickets/:id/status with { action: "StartProgress" | "MarkAsResolved" | "Close", assignedToUserId? } (assignedToUserId used for StartProgress)

Status workflow

StatusValueAllowed actions (admin)
New0Start Progress (assign to self)
InProgress1Reply to ticket; Mark Resolved
Resolved2Close (or wait for user feedback)
Closed3No further changes
  • New: No comments allowed until admin starts progress.
  • In Progress: Admin can reply; then must explicitly “Mark as Resolved.”
  • Resolved: Admin can close the ticket when done.

Backend API summary

MethodEndpointDescription
GET/api/ticketsList tickets (query: page, pageSize, status)
GET/api/tickets/:idGet ticket by ID
PUT/api/tickets/:id/statusUpdate status (body: action, optional assignedToUserId)
GET/api/ticket-comments/ticket/:ticketIdList comments (query: page, pageSize)
GET/api/ticket-comments/:commentId/repliesList replies for a comment
POST/api/ticket-commentsCreate comment (body: ticketId, text, parentCommentId?, attachmentUrls?)

Controllers: TicketsWriteController / TicketsReadController (api/tickets), TicketCommentsWriteController / TicketCommentsReadController (api/ticket-comments). Authentication and roles apply (admin/moderator for admin actions).

License

Support Tickets are license-gated: the supportTickets feature must be enabled (or MAIN license mode) for the Admin Panel to show the Support Tickets menu and for full ticket functionality.