Key BMS API Schemas
Source: GET https://api.bms.kaseya.com/swagger/v2/swagger.json
TicketInputDto (POST/PUT /v2/servicedesk/tickets)
| Field |
Type |
Required |
Notes |
| Title |
string |
✅ |
Ticket subject |
| Details |
string |
✅ |
Body/description |
| AccountId |
integer |
✅ |
Client account ID |
| LocationId |
integer |
✅ |
Account location ID |
| StatusId |
integer |
✅ |
Use bms lookup statuses |
| PriorityId |
integer |
✅ |
Use bms lookup priorities |
| TypeId |
integer |
✅ |
Use bms lookup ticket-types |
| SourceId |
integer |
✅ |
Use bms lookup sources |
| OpenDate |
string (ISO 8601) |
✅ |
e.g. 2024-01-15T00:00:00 |
| ContactId |
integer |
|
Contact person at the account |
| AssigneeId |
integer |
|
Technician assigned |
| QueueId |
integer |
|
Queue to place ticket in |
| IssueTypeId |
integer |
|
|
| SubIssueTypeId |
integer |
|
|
| DueDate |
string |
|
ISO 8601 |
| SLAId |
integer |
|
|
| WorkTypeId |
integer |
|
|
TicketFilterDto (inside GetTicketsInputDto.Filter)
Useful filter fields for POST /v2/servicedesk/tickets/search:
| Field |
Type |
Notes |
| StatusNames |
string |
Comma-separated or single status name |
| AssigneeName |
string |
Partial match supported |
| PriorityNames |
string |
Priority name(s) |
| QueueNames |
string |
Queue name(s) |
| Account |
string |
Account name search |
| Title |
string |
Ticket title search |
| CreatedOnFrom |
string (ISO 8601) |
Date range start |
| CreatedOnTo |
string (ISO 8601) |
Date range end |
| OpenDateFrom / OpenDateTo |
string |
Open date range |
| DueDateFrom / DueDateTo |
string |
Due date range |
| ExcludeCompleted |
integer |
1 = exclude completed |
| AccountIds |
string |
Comma-separated account IDs |
TicketNotePostInputDto (POST /v2/servicedesk/tickets/{id}/notes)
| Field |
Type |
Required |
Notes |
| Details |
string |
✅ |
Note body |
| IsInternal |
boolean |
✅ |
true = internal (hidden from client portal) |
| TypeId |
integer |
✅ |
Note type ID — use bms lookup note-types |
| NoteDate |
string (ISO 8601) |
✅ |
When the note was created |
| StatusId |
integer |
|
Change ticket status simultaneously |
AssignTicketInputDto (POST /v2/servicedesk/tickets/{id}/assignticket)
| Field |
Type |
Required |
Notes |
| Details |
string |
✅ |
Assignment note text |
| IsInternal |
boolean |
✅ |
|
| TypeId |
integer |
✅ |
Note type |
| NoteDate |
string |
✅ |
|
| StatusId |
integer |
✅ |
Status after assignment |
| AssigneeId |
integer |
|
New assignee |
| QueueId |
integer |
|
Queue to move to |
ResolveTicketDto (POST /v2/servicedesk/tickets/{id}/resolve)
| Field |
Type |
Required |
Notes |
| Comment |
string |
✅ |
Resolution description |
| StatusId |
integer |
|
Override resolved status |
| IsPublishToKnowledgeBase |
boolean |
|
Add to KB |
| IsInternal |
boolean |
|
|
| Field |
Notes |
| PageNumber |
1-indexed |
| PageSize |
Max ~100 |
| Sort |
e.g. "CreatedOn desc" |
Auth: POST /v2/security/authenticate
Multipart form-data:
| Field |
Notes |
| GrantType |
"password" or "client_credentials" |
| UserName |
For password grant |
| Password |
For password grant |
| Tenant |
Your tenant name (required) |
| ClientId |
For client_credentials grant |
| ClientSecret |
For client_credentials grant |
Response contains: AccessToken, RefreshToken, ExpiresIn
Auth: POST /v2/security/refreshtoken
JSON body:
| Field |
Required |
| AccessToken |
✅ |
| RefreshToken |
✅ |