# 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`