Skip to content

Instantly share code, notes, and snippets.

@mreschke
Last active August 10, 2021 15:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mreschke/e7d2e780184c92673890e51cf5bcad8c to your computer and use it in GitHub Desktop.
Save mreschke/e7d2e780184c92673890e51cf5bcad8c to your computer and use it in GitHub Desktop.
FusionAuth API Bash CLI
#!/usr/bin/env bash
# FusionAuth CLI API Tool
# Requirements: httpie and jq
# mReschke 2021-05-17
# Create an environment config in ~/.config/fusionauth/fa-api-prod like so
# auth_url='https://auth.yourfusion.com'
# api_key='master-api-key'
# user="admin@example.com"
# pass="pass"
# Required parameters
env="$1"
cmd="$2"
# Pull in local configs based on environment
config_file=~/.config/fusionauth/fa-api-$env
if [ -f "$config_file" ]; then
source $config_file
fi
function usage() {
echo "FusionAuth CLI API Tool"
echo "mReschke 2021-05-17"
echo
echo "First param is your environment xxx that is added to your config/fa-api-xxx"
echo
echo "Usage:"
echo " fa-api local apps"
echo " fa-api prod apps --verbose"
echo " fa-api local app Wiki"
echo " fa-api local app Wiki id"
echo " fa-api local login Wiki"
echo " fa-api prod login Wiki token"
}
function get_app_by_name() {
local name="$1"
local element="$2"
query=$(http GET $auth_url/api/application Authorization:$api_key | jq ".applications[] | select(.name == \"$name\")")
if [ "$element" == "" ]; then
echo $query | jq
else
echo $query | jq -r ".${element}"
fi
}
function list_apps() {
http GET $auth_url/api/application Authorization:$api_key | jq
}
function login() {
local app_name="$1"
local element="$2"
local app_id=$(get_app_by_name $app_name id)
if [ "$app_id" == "" ]; then echo "Application not found."; exit 1; fi
query=$(http POST $auth_url/api/login Authorization:$api_key applicationId=$app_id loginId=$user password=$pass)
if [ "$element" == "" ]; then
echo $query | jq
else
echo $query | jq -r ".${element}"
fi
}
# CLI Argument Parser
if [ "$cmd" == "login" ]; then
login $3 $4
elif [ "$cmd" == "apps" ]; then
if [ "$3" == "--verbose" ]; then
list_apps
else
list_apps | jq '.applications[] | {id, name}'
fi
elif [ "$cmd" == "app" ]; then
get_app_by_name $3 $4
else
usage
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment