When using the Python tool-kit with our On-Premise server we are able to connect and get a handle to the Rally object, but any query returns an empty JSON result.
Getting a handle to the Rally object involves an internal query that confirms the availability and validity of the username specified for the connection. This query is looking up the user by the field: "username".
On-Premise servers have the option to enable LDAP synchronization. In that mode, the users are imported from the corporate LDAP to the On-Premise server, including their LDAP usernames. The LDAP usernames are stored in a field/attribute named: OnPremLdapUsername.
If the value of this field is different than the value in the 'username' field then the internal user check during Rally's first API connection call will fail. It doesn't throw an exception but simply fails. You will still get a 200 OK return code for a connection made with the server, but the credentials are invalid and any subsequent query will return an empty JSON structure.
To resolve this:
Edit the Settings of the username and change their 'username' field to have the same value as their 'OnpremLdapUsername' field. You can Edit the user's profile to make this change:
More on Python's tool-kit, see: https://github.com/RallyTools/RallyRestToolkitForPython
Learn how to start building apps using the Python Tool-Kit.