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.
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).