When working with New APIS we need to test them with curl prior to writing the python client. I’ve often had to hand create the JSON used for the token request, as I wrote about way back here. Here is a simple bash script to convert the V3 environment variables into the JSON for a token request.

gen_token_request_json.sh

#!/bin/bash cat << EOF { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "$OS_USER_DOMAIN_NAME" }, "name": "$OS_USERNAME", "password": "$OS_PASSWORD" } } }, "scope": { "project": { "domain": { "name": "$OS_PROJECT_DOMAIN_NAME" }, "name": "$OS_PROJECT_NAME" } } } } EOF

Run it like this:

./gen_token_request_json.sh > token-request.json

And test it

curl -si -d @token-request.json -H "Content-type: application/json" $OS_AUTH_URL/auth/tokens

Should return a lot of JSON output.

This is for a project scoped token. Minor variations would get you unscoped or domain scoped.