Hey all! When I made this project I was working for a company that was trying to do corporate things for corporate reasons. I have been gone from that company for a long time now and I don't even have access to BambooHR anymore. I appreciate all the interest and I hope you found this useful. Hopefully someone has forked this project and will pick up the torch because I don't have time or interest in maintaining this anymore.
Cheers!
Scott
This is an unofficial Python API for Bamboo HR. So far it is focusing on managing employee information but you can pretty much do anything you want with a little python.
The library makes use of the requests library for Python and HTTPretty for testing. A huge thank you to both of those excellent projects.
Using this library is very simple:
from PyBambooHR import PyBambooHR
bamboo = PyBambooHR(subdomain='yoursub', api_key='yourapikeyhere')
employees = bamboo.get_employee_directory()
(Note that you have to enable sharing employee directory to use that method.)
This will give you a list of employees with properties on each including their ID.
from PyBambooHR import PyBambooHR
bamboo = PyBambooHR(subdomain='yoursub', api_key='yourapikeyhere')
# Jim's employee ID is 123 and we are not specifying fields so this will get all of them.
jim = bamboo.get_employee(123)
# Pam's employee ID is 222 and we are specifying fields so this will get only the ones we request.
pam = bamboo.get_employee(222, ['city', 'workPhone', 'workEmail'])
Adding an employee
from PyBambooHR import PyBambooHR
bamboo = PyBambooHR(subdomain='yoursub', api_key='yourapikeyhere')
# The firstName and lastName keys are required...
employee = {'firstName': 'Test', 'lastName': 'Person'}
result = bamboo.add_employee(employee)
The result dict will contain id and location. "id" is the numerical BambooHR employee ID. Location is a link to that employee.
Updating an employee
from PyBambooHR import PyBambooHR
bamboo = PyBambooHR(subdomain='yoursub', api_key='yourapikeyhere')
# His name was test person...
employee = {'firstName': 'Another', 'lastName': 'Namenow'}
# Use the ID and then the dict with the new information
result = bamboo.update_employee(333, employee)
result will be True or False depending on if it succeeded.
Requesting a Report
from PyBambooHR import PyBambooHR
bamboo = PyBambooHR(subdomain='yoursub', api_key='yourapikeyhere')
# Use the ID to request json information
result = bamboo.request_company_report(1, format='json', filter_duplicates=True)
# Now do stuff with your results (Will vary by report.)
for employee in result['employees']:
print(employee)
# Use the ID and save a pdf:
result = bamboo.request_company_report(1, format='pdf', output_file='/tmp/report.pdf', filter_duplicates=True)
Getting information that is scheduled in the future
from PyBambooHR import PyBambooHR
bamboo = PyBambooHR(subdomain='yoursub', api_key='yourapikeyhere', only_current=False)
BambooHR has effective dates for when promotions are scheduled to happen or when new hires are going to join the organization. In order to see these events before they happen using the BambooHR API set only_current
to False
. As a note, this only works for pulling reports and getting employee information. This does not work on getting the employee directory.