Created
June 18, 2020 21:43
-
-
Save turtlemonvh/c131c998b2e1a3e0d9192b5093062cdb to your computer and use it in GitHub Desktop.
Create Ionic API key
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 | |
## Script for creating an API key | |
## Use | |
# $ bash createapikey.sh | |
#Tenant ID: 5e7e32613961387979fcfd54 | |
#Username or email address: [email protected] | |
#Password: | |
#>> Fetching user info | |
#>> Creating API Key | |
#>> API Key Details | |
#bearer token = XXXXX | |
#hmac public = XXXXX | |
#hmac private = XXXXX= | |
read -p 'Tenant ID: ' tenantid | |
read -p 'Username or email address: ' username | |
read -sp 'Password: ' password | |
extract_json_field() { python -c "import sys, json; print(json.load(sys.stdin)[\"$1\"])"; } | |
echo | |
echo ">> Fetching user info" | |
userinfo_response=$(curl -s -X GET -u $username:$password https://api.deveng.ionic.engineering/v2/$tenantid/scim/Users/Me) | |
userid=$(echo $userinfo_response | extract_json_field id) | |
apikey_request_body() { | |
cat << EOF | |
{ | |
"name":"Devx", | |
"scopes":[ | |
"access:api", | |
"analytics:all","analytics:applications","analytics:enrollments","analytics:metrics","analytics:policies","analytics:userlifecycle", | |
"apikey:create","apikey:delete","apikey:manage","apikey:read","apikey:update", | |
"applications:create","applications:delete","applications:manage","applications:read","applications:update", | |
"billing:manage","billing:read", | |
"devices:delete","devices:manage","devices:read","devices:update", | |
"downloads:read", | |
"groups:create","groups:delete","groups:manage","groups:read","groups:update", | |
"keyservers:conns:update","keyservers:creds:create","keyservers:creds:delete","keyservers:creds:manage","keyservers:creds:read","keyservers:creds:update","keyservers:manage","keyservers:read","keyservers:state:update", | |
"keyspaces:read","keyspaces:update", | |
"manage:all", | |
"markings:create","markings:delete","markings:manage","markings:read","markings:update", | |
"onboarding:user", | |
"policies:create","policies:delete","policies:manage","policies:publish","policies:read","policies:simulate","policies:update", | |
"read:all", | |
"roles:create","roles:delete","roles:manage","roles:read","roles:update", | |
"settings:manage","settings:read","settings:update", | |
"users:create","users:delete","users:manage","users:read","users:update" | |
] | |
} | |
EOF | |
} | |
echo ">> Creating API Key" | |
response=$( | |
curl -s \ | |
-H "Accept: application/json" \ | |
-H "Content-Type:application/json" \ | |
-X POST \ | |
-u $username:$password \ | |
https://api.deveng.ionic.engineering/v2/$tenantid/scim/Users/$userid/apikeys \ | |
--data "$(apikey_request_body)" | |
) | |
echo ">> API Key Details" | |
echo bearer token = $(echo $response | extract_json_field bearer) | |
echo hmac public = $(echo $response | extract_json_field id) | |
echo hmac private = $(echo $response | extract_json_field secret) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Working with JSON in bash is super nasty. I messed with sed for a little while but ended up giving up and using python.
A simple python script (likely calling out to curl to make requests) would be much nicer.