Yes, you can use the function:
Code:
PutPointIntoSkillAbility(skillType, skillIndex, abilityIndex, putPointInNextUpgrade)
with the following caveats:
- putPointInNextUpgrade should be false for purchasing the initial passive (current level is 0) and then true for subsequent purchases.
- There is a limit on how fast/often you can call this function before you get kicked for spamming. For example, when I'm mining skills and purchase one level of all passives I have to spread out the calls over around 30 seconds, and even then sometimes the game doesn't like it.