Last active
August 10, 2021 15:06
-
-
Save mreschke/e7d2e780184c92673890e51cf5bcad8c to your computer and use it in GitHub Desktop.
FusionAuth API Bash CLI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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="[email protected]" | |
# 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