Link Search Menu Expand Document

Tickets API Documentation

Base URL: /api/TicketsApi
Authentication: All endpoints require a valid JWT Bearer token unless otherwise noted.
Header: Authorization: Bearer <token>


Table of Contents

  1. Get Tickets (Paginated List)
  2. Get Ticket by ID
  3. Register Ticket
  4. Update Ticket
  5. Forward Ticket
  6. Reply to Ticket
  7. Close Ticket
  8. Resolve Ticket
  9. Pick Up Ticket
  10. Mark Ticket as Read
  11. Add Ticket Attachments
  12. Delete Ticket
  13. Ticket Metadata
  14. App Metadata
  15. New Ticket (Integration API)
  16. List Tickets by Username
  17. Requester Reply to Ticket

1. Get Tickets (Paginated List)

Retrieves a paginated, filtered list of tickets based on the authenticated user’s permissions and the requested list type.

Property Value
Method POST
Endpoint /api/TicketsApi
Auth JWT Bearer required
Permission Tickets.OnlyPrivate (optional — limits to own tickets)
Body application/json

Request Body (TicketTable)

Field Type Required Default Description
page int No 1 Page number (1-based)
length int No 10 Number of records per page
search string No null Search keyword (matches Subject, Ticket ID, Priority, Requester)
listType string No null Filter preset (see List Types table below)
filterBy string No null Comma-separated field names to search within: Subject, TicketId, Priority, Requester

List Types

Value Description
AllMyGroups Tickets assigned to any group the current user belongs to
MyOpenOrUnassigned Open tickets assigned to or created by the user, or unassigned
UnassignedTickets Tickets with no assigned technician
MyOpenTickets Open tickets assigned to or created by the user
MyTicketsOnhold On-hold tickets involving the user
MyOverdueTickets Overdue tickets (past due date, not resolved/closed) for the user
MyPendingTickets Pending tickets for the user
MyTicketsDueToday Tickets due today for the user
MyEscalated Escalated tickets involving the user
AllEscalated All escalated tickets (non-member only)
MyCompletedTickets Resolved/closed tickets for the user
AllMyTickets All tickets created by or assigned to the user
MyOpenTasks Tickets that have open tasks assigned to the user
MyCompletedTasks Tickets with completed tasks assigned to the user
TicketsOnHold All on-hold tickets
OverdueTickets All overdue tickets
TicketsDueToday All tickets due today
PendingTickets All pending tickets
CompletedTickets All resolved or closed tickets
AllTickets All tickets (non-members only; members see own tickets)

Responses

Status Description
200 OK Returns a JSON array of TicketList objects

2. Get Ticket by ID

Retrieves full details of a single ticket.

Property Value
Method GET
Endpoint /api/TicketsApi/{id}
Auth JWT Bearer required

Path Parameters

Parameter Type Required Description
id long Yes The ticket ID

Responses

Status Description
200 OK Returns a TicketApiModel object with full ticket details including creator, assignee, category, site, department, group, status, priority, and resolution
404 Not Found Ticket does not exist

3. Register Ticket

Creates a new ticket on behalf of the authenticated user (manual source). Supports file attachments, auto SLA assignment, and technician auto-assignment. Sends assignment notification email and push notification if configured.

Property Value
Method POST
Endpoint /api/TicketsApi/register
Auth JWT Bearer required
Permission Tickets.Create
Body multipart/form-data

Request Body (TicketCreateViewModel)

Field Type Required Description
Title string (max 255) Yes Ticket subject
Description string Yes Detailed description
CreatorId string Yes ID of the user this ticket is being created on behalf of (requester)
SiteId int Yes Site ID
DepartmentId int Yes Department ID
TicketStatusId int Yes Initial ticket status ID
TicketType TicketType enum Yes Type (Ticket, Problem, etc.)
Cc string No CC email addresses
Guid string No External GUID (auto-generated if omitted)
TicketCategoryId int? No Category ID
TicketSubCategoryId int? No Subcategory ID
ItemId int? No Item/CI ID
DueDate datetime? No Manually specified due date (overridden by SLA if found)
TierLevelId int? No Support tier level ID
GroupId int? No Assigned group ID
ClientId int? No Client ID
TicketPriorityId int? No Priority ID
AssignedUser string? No Technician user ID to auto-assign
SLAId int? No Explicit SLA ID (determined automatically if omitted)
ServiceId int? No Service category ID
ImpactId int? No Impact ID
UrgencyId int? No Urgency ID
SelectedTags int[] No Array of tag IDs
Uploads IFormFile[] No Attachment files

Responses

Status Description
201 Created Ticket created. Returns the created Ticket object with a Location header pointing to GET /api/TicketsApi/{id}
400 Bad Request Permission denied, or model validation failed, or save error

4. Update Ticket

Updates an existing ticket’s fields. Triggers SLA recalculation if priority changes, and sends email/push notifications if the technician changes.

Property Value
Method POST
Endpoint /api/TicketsApi/update/{id}
Auth JWT Bearer required
Permission Tickets.Update
Body multipart/form-data

Path Parameters

Parameter Type Required Description
id int Yes The ticket ID to update

Request Body (TicketUpdateModel)

Field Type Required Description
Id long No Ticket ID (must match path id)
DueDate datetime? No New due date
TicketCategoryId int? No Category ID
TicketSubCategoryId int? No Subcategory ID
ItemId int? No Item/CI ID
TicketType TicketType No Ticket type
TierLevelId int? No Support tier level ID
ClientId int? No Client ID
SiteId int No Site ID
DepartmentId int No Department ID
TicketStatusId int No New status ID (only applied if > 0 and different from current)
TicketPriorityId int? No Priority ID (triggers SLA recalculation if changed)
GroupId int? No Group ID
CreatorId string Yes Requester/creator user ID
AssignedUser string? No Technician user ID
TemplateId Guid? No Template ID
ServiceId int? No Service category ID
ImpactId int? No Impact ID
UrgencyId int? No Urgency ID

Responses

Status Description
204 No Content Ticket updated successfully
400 Bad Request Ticket not found, or save error
403 Forbidden Insufficient permissions

5. Forward Ticket

Sends a forward email conversation on behalf of the authenticated user and logs it as a conversation on the ticket.

Property Value
Method POST
Endpoint /api/TicketsApi/forward/{id}
Auth JWT Bearer required
Permission Tickets.Forward
Body multipart/form-data

Path Parameters

Parameter Type Required Description
id int Yes The ticket ID (must match model.Id)

Request Body (ApiForwardTicket)

Field Type Required Description
Id int Yes Ticket ID (must match path id)
Title string Yes Email subject
SendTo string Yes Recipient email address
CcTo string No CC email addresses
Message string No Email body/message content
HasDraft bool No Whether this was drafted (default: false)
Uploads IFormFile[] No Attachment files

Responses

Status Description
200 OK Forwarded successfully
400 Bad Request ID mismatch, ticket not found, or model validation failed
403 Forbidden Insufficient permissions

6. Reply to Ticket

Posts a reply email conversation on a ticket and sends it to the specified recipient.

Property Value
Method POST
Endpoint /api/TicketsApi/reply/{id}
Auth JWT Bearer required
Permission Tickets.Reply
Body multipart/form-data

Path Parameters

Parameter Type Required Description
id int Yes The ticket ID (must match model.Id)

Request Body (ApiReplyTicket)

Field Type Required Description
Id int Yes Ticket ID (must match path id)
Title string Yes Email subject
SendTo string Yes Recipient email address
CcTo string No CC email addresses
Message string No Reply message body
Uploads IFormFile[] No Attachment files

Responses

Status Description
200 OK Reply sent successfully
400 Bad Request ID mismatch, ticket not found, or model validation failed
403 Forbidden Insufficient permissions

7. Close Ticket

Closes a ticket, sets status to the system-configured “Closed” status, logs a conversation record, and optionally sends a closure notification email to the requester and CC list.

Property Value
Method POST
Endpoint /api/TicketsApi/close/{id}
Auth JWT Bearer required
Permission Tickets.Close
Body multipart/form-data

Path Parameters

Parameter Type Required Description
id int Yes The ticket ID to close

Request Body (ApiTicketClosure)

Field Type Required Description
TicketId int Yes Ticket ID (must match path id)
CloseBy string Yes ID of the user performing the closure
Acknowledged bool No Whether the requester acknowledged the resolution. If true, sends closure notification email (default: false)
Comments string No Closure comments
Status ClosureStatus? No Closure status code
ClosureComments string No Additional closure comments
ClosingDate datetime No Date/time of closure
Uploads IFormFile[] No Attachment files

Responses

Status Description
204 No Content Ticket closed successfully
200 OK Ticket was already closed — no action taken
400 Bad Request Save error
403 Forbidden Insufficient permissions
404 Not Found Ticket does not exist

8. Resolve Ticket

Marks a ticket as resolved, saves or updates the resolution details, sends a resolution email with a close link, and triggers an optional TPI (third-party integration) callback.

Property Value
Method POST
Endpoint /api/TicketsApi/resolve/{id}
Auth JWT Bearer required
Permission Tickets.Resolve
Body multipart/form-data

Path Parameters

Parameter Type Required Description
id int Yes The ticket ID to resolve

Request Body (Resolution)

Field Type Required Description
TicketId long Yes Ticket ID
Details string Yes Resolution notes/details
SubmitBy string Yes User ID of the resolver
SubmitDate datetime No Auto-set if creating a new resolution record

Responses

Status Description
200 OK Ticket resolved successfully (or already resolved)
400 Bad Request Ticket not found, or save error
403 Forbidden Insufficient permissions
500 Internal Server Error Unexpected error during transaction

9. Pick Up Ticket

Assigns the currently authenticated user as the technician on the ticket (self-assignment).

Property Value
Method POST
Endpoint /api/TicketsApi/pickup/{id}
Auth JWT Bearer required
Permission Tickets.Pickup
Body None

Path Parameters

Parameter Type Required Description
id long Yes The ticket ID to pick up

Responses

Status Description
200 OK Ticket picked up (or already assigned to the caller — no change)
400 Bad Request Save error
403 Forbidden Insufficient permissions
404 Not Found Ticket does not exist
500 Internal Server Error Unexpected error

10. Mark Ticket as Read

Marks a ticket as read by the authenticated user. No-op if already read.

Property Value
Method POST
Endpoint /api/TicketsApi/read/{id}
Auth JWT Bearer required
Body None

Path Parameters

Parameter Type Required Description
id long Yes The ticket ID

Responses

Status Description
200 OK Ticket marked as read
404 Not Found Ticket does not exist

11. Add Ticket Attachments

Uploads one or more files as attachments to an existing ticket.

Property Value
Method POST
Endpoint /api/TicketsApi/addfiles/{id}
Auth JWT Bearer required
Body multipart/form-data

Path Parameters

Parameter Type Required Description
id long Yes The ticket ID

Form Fields

Field Type Required Description
Uploads IFormFile[] Yes One or more files to attach. Only file types enabled in the system’s allowed file-type list are accepted.

Responses

Status Description
200 OK Files uploaded (allowed files saved; disallowed extensions silently skipped)

12. Delete Ticket

Soft-deletes a ticket (sets IsDeleted = true, records DeletedOn timestamp).

Property Value
Method DELETE
Endpoint /api/TicketsApi/{id}
Auth JWT Bearer required
Permission Tickets.Delete

Path Parameters

Parameter Type Required Description
id long Yes The ticket ID to delete

Responses

Status Description
200 OK Returns the soft-deleted Ticket object
403 Forbidden Insufficient permissions
404 Not Found Ticket does not exist
500 Internal Server Error Unexpected save error

13. Ticket Metadata

Returns all lookup data needed to populate ticket forms. When a ticket ID is provided, subcategories and items are scoped to that ticket’s current category/subcategory.

Property Value
Method GET
Endpoint /api/TicketsApi/metadata/{id?}
Auth JWT Bearer required

Path Parameters

Parameter Type Required Description
id int No Optional ticket ID. If provided, subcategories/items are context-filtered.

Response Body

Field Description
groups [{ id, group }] — all ticket groups
levels [{ id, title }] — tier levels
priorities [{ id, priority }] — ticket priorities
categories [{ id, name }] — top-level categories
sub_categories [{ id, name }] — subcategories (scoped to ticket’s category when id provided)
items [{ id, name }] — items/CIs (scoped to ticket’s subcategory when id provided)
status [{ id, status, statusType }] — ticket statuses
clients [{ id, name }] — clients
sites [{ id, title }] — sites
departments [{ id, title }] — departments
technicians [{ id, fullName, userName }] — available technicians (filtered by group when id provided)
requesters [{ id, fullName, userName }](only when no id provided) all requesters

Responses

Status Description
200 OK Returns the metadata object
400 Bad Request Error loading data when a ticket id is provided

14. App Metadata

Returns global application lookup data (no ticket context). Useful for initial screen load.

Property Value
Method GET
Endpoint /api/TicketsApi/appmetadata
Auth JWT Bearer required

Response Body

Field Description
groups [{ id, group }] — all ticket groups
levels [{ id, title }] — tier levels
priorities [{ id, priority }] — ticket priorities
categories [{ id, name }] — top-level categories
status [{ id, status, statusType }] — ticket statuses
clients [{ id, name }] — clients
sites [{ id, title }] — sites
departments [{ id, title }] — departments

Responses

Status Description
200 OK Returns the app metadata object
400 Bad Request Unexpected error

15. New Ticket (Integration API)

Creates a ticket from a third-party integration. Source is set to Api. Resolves requester by username or email. Does not require Tickets.Create permission — uses JWT authentication only.

Property Value
Method POST
Endpoint /api/TicketsApi/new
Auth JWT Bearer required
Body multipart/form-data

Request Body (ICreateTicketVM)

Field Type Required Description
Title string (max 255) Yes Ticket subject
Description string Yes Detailed description
Requester string Yes Username of the requester (looked up to resolve requester ID)
Email string No Email address used to look up or match the requester
TierLevelId int? No Tier level (defaults to system default if omitted)
GroupId int? No Group ID
SiteId int? No Site ID (defaults to system default if omitted)
DepartmentId int? No Department ID
ClientId int? No Client ID
TicketStatusId int? No Status ID (defaults to system default if omitted)
TicketPriorityId int? No Priority ID (defaults to system default if omitted)
TicketCategoryId int? No Category ID (defaults to system default if omitted)
Uploads IFormFile[] No Attachment files

Responses

Status Description
201 Created Ticket created. Returns TicketApiModel with a Location header pointing to GET /api/TicketsApi/{id}
400 Bad Request Model validation failed or save error

16. List Tickets by Username

Returns the 25 most recent tickets created by a specified user. Supports pagination.

Property Value
Method POST
Endpoint /api/TicketsApi/list
Auth JWT Bearer required
Body multipart/form-data

Form Fields

Field Type Required Default Description
username string Yes Username of the requester whose tickets to list
page int No 1 Page number (1-based; page size is fixed at 25)

Responses

Status Description
200 OK Returns a JSON array of TicketApiModel objects, ordered by creation date descending

17. Requester Reply to Ticket

Allows a requester (end user) to post a reply on their own ticket. If the ticket was resolved or closed, it is automatically re-opened (unless locked). Sends a technician notification email if configured.

Property Value
Method POST
Endpoint /api/TicketsApi/reqreply/{id}
Auth JWT Bearer required
Body multipart/form-data

Path Parameters

Parameter Type Required Description
id int Yes The ticket ID (must match model.Id)

Request Body (ReqReplyTicket)

Field Type Required Description
Id int Yes Ticket ID (must match path id)
Username string Yes Username of the requester posting the reply
Title string Yes Reply subject/title
Message string No Reply message body
Uploads IFormFile[] No Attachment files

Responses

Status Description
200 OK Reply posted successfully
400 Bad Request ID mismatch, user not found, ticket not found, or model validation failed

Common Error Responses

Status Description
400 Bad Request Validation failure, business rule violation, or generic save error
401 Unauthorized Missing or invalid JWT token
403 Forbidden Valid token but missing required permission claim
404 Not Found Requested resource does not exist
500 Internal Server Error Unhandled exception during processing

Notes

  • All file uploads are validated against the system’s allowed file-type list. Disallowed extensions are silently skipped.
  • SLA is automatically calculated on ticket creation and on priority change during update — manually provided DueDate may be overridden.
  • Auto-assignment (if configured) runs on creation and/or update based on system settings.
  • Push notifications (FCM) and background emails are sent asynchronously and failures are logged but do not affect the API response.
  • Ticket sources: Manual (register endpoint), Api (new/integration endpoint).