Files
openclaw-bms/references/key-schemas.md

108 lines
3.6 KiB
Markdown

# 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 | | |
## Pagination (GetTicketsInputDto)
| 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 | ✅ |