100 lines
2.7 KiB
Bash
Executable File
100 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# bms-lookup.sh — Fetch lookup tables (statuses, priorities, queues, etc.)
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
BMS_API_BASE="${BMS_API_BASE:-https://api.bms.kaseya.com}"
|
|
|
|
die() { echo "ERROR: $*" >&2; exit 1; }
|
|
|
|
get_token() {
|
|
bash "${SCRIPT_DIR}/bms-auth.sh" get-token
|
|
}
|
|
|
|
bms_curl() {
|
|
local path="$1"; shift
|
|
local token
|
|
token=$(get_token)
|
|
curl -sf -X GET \
|
|
"${BMS_API_BASE}${path}" \
|
|
-H "Authorization: Bearer ${token}" \
|
|
-H "Accept: application/json" \
|
|
"$@"
|
|
}
|
|
|
|
format_lookup() {
|
|
jq -r '
|
|
(.Data // .Items // .) |
|
|
if type == "array" then .[]
|
|
else .
|
|
end |
|
|
"\(.Id // .id)\t\(.Name // .name // .Text // .text // "(unnamed)")"
|
|
' | sort -n | column -t -s $'\t'
|
|
}
|
|
|
|
cmd_lookup() {
|
|
local table="$1"
|
|
case "$table" in
|
|
statuses|status)
|
|
echo "=== Ticket Statuses ===" >&2
|
|
bms_curl "/v2/system/statuses/lookup" | format_lookup
|
|
;;
|
|
priorities|priority)
|
|
echo "=== Priorities ===" >&2
|
|
bms_curl "/v2/system/priorities/lookup" | format_lookup
|
|
;;
|
|
queues|queue)
|
|
echo "=== Queues ===" >&2
|
|
bms_curl "/v2/system/queues/lookup" | format_lookup
|
|
;;
|
|
issue-types|issuetypes)
|
|
echo "=== Issue Types ===" >&2
|
|
bms_curl "/v2/system/issuetypes/lookup" | format_lookup
|
|
;;
|
|
sources|source)
|
|
echo "=== Ticket Sources ===" >&2
|
|
bms_curl "/v2/system/lookup/TicketSource" | format_lookup
|
|
;;
|
|
ticket-types|tickettypes)
|
|
echo "=== Ticket Types ===" >&2
|
|
bms_curl "/v2/system/lookup/TicketType" | format_lookup
|
|
;;
|
|
assignees|assignee|technicians)
|
|
echo "=== Assignees / Technicians ===" >&2
|
|
bms_curl "/v2/hr/assignees/lookup" | format_lookup
|
|
;;
|
|
slas|sla)
|
|
echo "=== SLAs ===" >&2
|
|
bms_curl "/v2/system/slas/lookup" | format_lookup
|
|
;;
|
|
work-types|worktypes)
|
|
echo "=== Work Types ===" >&2
|
|
bms_curl "/v2/system/worktypes/lookup" | format_lookup
|
|
;;
|
|
note-types|notetypes)
|
|
echo "=== Note Types (via tenantlookup) ===" >&2
|
|
bms_curl "/v2/system/tenantlookup/NoteType" | format_lookup
|
|
;;
|
|
all)
|
|
cmd_lookup statuses
|
|
echo
|
|
cmd_lookup priorities
|
|
echo
|
|
cmd_lookup queues
|
|
echo
|
|
cmd_lookup issue-types
|
|
echo
|
|
cmd_lookup assignees
|
|
;;
|
|
*)
|
|
die "Unknown lookup table: $table
|
|
Available: statuses, priorities, queues, issue-types, sources, ticket-types, assignees, slas, work-types, note-types, all"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
table="${1:-}"
|
|
[[ -n "$table" ]] || die "Usage: bms lookup <statuses|priorities|queues|issue-types|sources|ticket-types|assignees|slas|work-types|note-types|all>"
|
|
cmd_lookup "$table"
|