139 lines
3.2 KiB
Markdown
139 lines
3.2 KiB
Markdown
# BMS Skill — Kaseya BMS Ticket Management
|
|
|
|
Python-based OpenClaw skill for Kaseya BMS ticket and note workflows.
|
|
|
|
## Run
|
|
|
|
Preferred:
|
|
|
|
```bash
|
|
bms --help
|
|
```
|
|
|
|
Alternative:
|
|
|
|
```bash
|
|
python3 -m openclaw_bms --help
|
|
```
|
|
|
|
## Configuration
|
|
|
|
```bash
|
|
export BMS_TENANT="your-tenant-name"
|
|
export BMS_USERNAME="user@example.com"
|
|
export BMS_PASSWORD="yourpassword"
|
|
export BMS_MFA_CODE="123456"
|
|
export BMS_API_BASE="https://api.bms.kaseya.com"
|
|
export BMS_TOKEN_FILE="$HOME/.bms_token.json"
|
|
export BMS_CACHE_FILE="$HOME/.cache/openclaw-bms/cache.json"
|
|
```
|
|
|
|
## Key functionality
|
|
|
|
### Accounts and Locations
|
|
|
|
Use CRM endpoints and respect account/location relationships:
|
|
|
|
```bash
|
|
bms accounts
|
|
bms locations --account 12345
|
|
```
|
|
|
|
Important:
|
|
- locations are account-scoped
|
|
- a location name under one account is not interchangeable with the same location name under another account
|
|
- accounts and per-account locations are cached for 24 hours
|
|
|
|
### Tickets
|
|
|
|
```bash
|
|
bms tickets list --status Open --assignee "Jane Doe"
|
|
bms tickets get 12345
|
|
bms tickets create --title "test" --details "Test" --account-id 1 --location-id 2 --status-id 3 --priority-id 4 --type-id 5 --source-id 6 --queue-id 7 --open-date 2026-04-07T14:00:00+00:00
|
|
bms tickets create --template-id 9 --title "Override title" --account-id 1 --location-id 2 --queue-id 7
|
|
bms tickets patch 12345 /StatusId 6
|
|
bms tickets assign 12345 --details "Routing" --type-id 1 --status-id 6 --queue-id 7
|
|
bms tickets delete 12345
|
|
```
|
|
|
|
### Notes
|
|
|
|
```bash
|
|
bms notes list 12345
|
|
bms notes add 12345 --message "Investigating" --note-date 2026-04-07T12:00:00+00:00
|
|
bms notes update 12345 999 --message "Corrected note" --note-date 2026-04-07T13:00:00+00:00
|
|
bms notes delete 12345 999
|
|
```
|
|
|
|
### Lookups
|
|
|
|
```bash
|
|
bms lookup statuses
|
|
bms lookup priorities
|
|
bms lookup types
|
|
bms lookup sources
|
|
```
|
|
|
|
### Templates
|
|
|
|
```bash
|
|
bms templates tickets list
|
|
bms templates tickets get 9
|
|
bms templates notes list
|
|
bms templates timelogs list
|
|
```
|
|
|
|
Templates are read-only.
|
|
|
|
## Audit logging
|
|
|
|
Only write operations are audited.
|
|
Read operations are intentionally not logged.
|
|
|
|
Audit path:
|
|
|
|
```text
|
|
~/.bms-actions/YYYY-MM-DD.jsonl
|
|
```
|
|
|
|
Entry fields:
|
|
- `timestamp`
|
|
- `command`
|
|
- `args_sanitized`
|
|
- `result` or `error`
|
|
- `status`
|
|
- `revert_info` when available
|
|
|
|
Secrets are redacted before logging.
|
|
|
|
## Endpoints used
|
|
|
|
Auth:
|
|
- `POST /v2/security/authenticate`
|
|
- `POST /v2/security/refreshtoken`
|
|
|
|
CRM lookup:
|
|
- `GET /v2/crm/accounts/lookup`
|
|
- `GET /v2/crm/accounts/{accountId}/locations/lookup`
|
|
|
|
Tickets:
|
|
- `POST /v2/servicedesk/tickets/search`
|
|
- `GET /v2/servicedesk/tickets/{ticketId}`
|
|
- `POST /v2/servicedesk/tickets`
|
|
- `PATCH /v2/servicedesk/tickets/{ticketId}`
|
|
- `DELETE /v2/servicedesk/tickets/{ticketId}`
|
|
- `POST /v2/servicedesk/tickets/{ticketId}/assignticket`
|
|
|
|
Notes:
|
|
- `GET /v2/servicedesk/tickets/{ticketId}/notes`
|
|
- `GET /v2/servicedesk/tickets/{ticketId}/notes/{noteId}`
|
|
- `POST /v2/servicedesk/tickets/{ticketId}/notes`
|
|
- `PUT /v2/servicedesk/tickets/{ticketId}/notes/{noteId}`
|
|
- `DELETE /v2/servicedesk/tickets/{ticketId}/notes/{noteId}`
|
|
|
|
Templates:
|
|
- `GET /v2/servicedesk/templates/tickets/lookup`
|
|
- `GET /v2/servicedesk/templates/tickets/{templateId}`
|
|
- `GET /v2/servicedesk/templates/notes/lookup`
|
|
- `GET /v2/servicedesk/templates/timelogs/lookup`
|