Add accounts and locations lookups
This commit is contained in:
52
scripts/bms-accounts.sh
Executable file
52
scripts/bms-accounts.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
# bms-accounts.sh — List servicedesk accounts
|
||||
|
||||
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" \
|
||||
"$@"
|
||||
}
|
||||
|
||||
cmd_accounts_list() {
|
||||
local response
|
||||
response=$(bms_curl "/v2/servicedesk/accounts/lookup") || die "Failed to fetch accounts"
|
||||
|
||||
# Extract the array - response is {"result": [...]}
|
||||
local items
|
||||
items=$(echo "$response" | jq -r '.result // .Data // .Items // .' 2>/dev/null) || \
|
||||
die "Failed to parse accounts response"
|
||||
|
||||
# Check if it's an array
|
||||
if ! echo "$items" | jq -e 'type == "array"' >/dev/null 2>&1; then
|
||||
die "Expected an array of accounts, got: $(echo "$items" | jq -c . 2>/dev/null || echo "non-JSON")"
|
||||
fi
|
||||
|
||||
echo "=== Servicedesk Accounts ===" >&2
|
||||
echo "$items" | jq -r '.[] | "\(.Id // .id)\t\(.Name // .name)\t\(.Code // .code // "")"' |
|
||||
awk '{printf "%-10s %-40s %-20s\n", $1, $2, $3}'
|
||||
}
|
||||
|
||||
# Main
|
||||
cmd="${1:-}"
|
||||
[[ -n "$cmd" ]] || { echo "Usage: bms-accounts.sh list" >&2; exit 1; }
|
||||
|
||||
case "$cmd" in
|
||||
list) cmd_accounts_list ;;
|
||||
*) die "Unknown command: $cmd. Available: list" ;;
|
||||
esac
|
||||
90
scripts/bms-locations.sh
Executable file
90
scripts/bms-locations.sh
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env bash
|
||||
# bms-locations.sh — List servicedesk locations for an account
|
||||
|
||||
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; }
|
||||
|
||||
usage() {
|
||||
cat >&2 <<'EOF'
|
||||
Usage: bms-locations.sh list --account <account_id>
|
||||
|
||||
Fetch servicedesk locations for a given account.
|
||||
|
||||
Options:
|
||||
--account <id> Account ID (required)
|
||||
-h, --help Show this help
|
||||
EOF
|
||||
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" \
|
||||
"$@"
|
||||
}
|
||||
|
||||
cmd_locations_list() {
|
||||
local account_id=""
|
||||
|
||||
# Simple arg parsing
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--account)
|
||||
account_id="$2"
|
||||
shift 2
|
||||
;;
|
||||
--account=*)
|
||||
account_id="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
die "Unknown option: $1"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -n "$account_id" ]] || die "Missing required --account <id>"
|
||||
|
||||
local response
|
||||
response=$(bms_curl "/v2/servicedesk/locations?accountId=${account_id}") || die "Failed to fetch locations"
|
||||
|
||||
# Extract the array - response is {"result": [...]}
|
||||
local items
|
||||
items=$(echo "$response" | jq -r '.result // .Data // .Items // .' 2>/dev/null) || \
|
||||
die "Failed to parse locations response"
|
||||
|
||||
# Check if it's an array
|
||||
if ! echo "$items" | jq -e 'type == "array"' >/dev/null 2>&1; then
|
||||
die "Expected an array of locations, got: $(echo "$items" | jq -c . 2>/dev/null || echo "non-JSON")"
|
||||
fi
|
||||
|
||||
echo "=== Servicedesk Locations (Account: $account_id) ===" >&2
|
||||
echo "$items" | jq -r '.[] | "\(.Id // .id)\t\(.Name // .name)"' |
|
||||
awk '{printf "%-10s %-40s\n", $1, $2}'
|
||||
}
|
||||
|
||||
# Main
|
||||
cmd="${1:-}"
|
||||
[[ -n "$cmd" ]] || usage
|
||||
shift
|
||||
|
||||
case "$cmd" in
|
||||
list) cmd_locations_list "$@" ;;
|
||||
*) die "Unknown command: $cmd. Available: list" ;;
|
||||
esac
|
||||
4
scripts/bms.sh
Executable file → Normal file
4
scripts/bms.sh
Executable file → Normal file
@@ -15,6 +15,8 @@ Usage:
|
||||
bms tickets <subcommand> Manage tickets
|
||||
bms templates <resource> <sub> Browse ticket/note/timelog templates
|
||||
bms lookup <table> Fetch lookup tables (IDs for statuses, etc.)
|
||||
bms accounts List servicedesk accounts
|
||||
bms locations --account <id> List locations for an account
|
||||
|
||||
Tickets subcommands:
|
||||
list List/search tickets
|
||||
@@ -77,6 +79,8 @@ case "$cmd" in
|
||||
tickets) exec bash "${SCRIPT_DIR}/bms-tickets.sh" "$@" ;;
|
||||
templates) exec bash "${SCRIPT_DIR}/bms-templates.sh" "$@" ;;
|
||||
lookup) exec bash "${SCRIPT_DIR}/bms-lookup.sh" "$@" ;;
|
||||
accounts) exec bash "${SCRIPT_DIR}/bms-accounts.sh" "$@" ;;
|
||||
locations) exec bash "${SCRIPT_DIR}/bms-locations.sh" "$@" ;;
|
||||
help|-h|--help) usage ;;
|
||||
*)
|
||||
echo "Unknown command: $cmd" >&2
|
||||
|
||||
Reference in New Issue
Block a user