Skip to main content

BambooHR Component

Manage employees and HR data in the BambooHR platform

Component key: bamboohr

Changelog ↓

Description

BambooHR is a comprehensive human resources software platform that helps companies manage their HR processes effectively. BambooHR's services include an applicant tracking system, employee benefits tracker, time tracking, and employee records management. This component allows you to interact with the BambooHR API.

API Documentation

This component was built using the BambooHR API Documentation

Connections

API Key

Bamboo HR API keys can be used for testing an integration, but for production integrations, please use OAuth 2.0.

To generate an API key, log in to Bamboo HR, click your user profile image on the upper-right and then click API Keys. Click Add New Key, and take note of the API key that is generated - it will be a ~40 character alphanumeric string.

InputNotesExample
API Key

Your BambooHR API key. You can generate this in your BambooHR account settings.

Company Domain

The MYCOMPANY portion of your https://MYCOMPANY.bamboohr.com instance

Triggers

Webhook

Receive and validate webhook requests from BambooHR for webhooks you configure. | key: bamboohrTrigger


Data Sources

Select Employee

Select an employee from a list of employees. | key: selectEmployee | type: picklist

InputNotesExample
Connection

Actions

Add Employee

Add a new employee | key: addEmployee

InputNotesExample
Connection
Employee Fields

The names of the fields and their values to use when creating/updating a record. Possible fields are: address1, address2, age, bestEmail, birthday, city, country, dateOfBirth, department, division, employeeNumber, employmentHistoryStatus, ethnicity, exempt, firstName, fullName1, fullName2, fullName3, fullName4, fullName5, displayName, gender, hireDate, originalHireDate, id, jobTitle, lastChanged, lastName, location, maritalStatus, middleName, mobilePhone, nationality, payGroup, payRate, payRateEffectiveDate, payType, paidPer, paySchedule, payFrequency, includeInPayroll, timeTrackingEnabled, ssn, sin, standardHoursPerWeek, state, stateCode, status, supervisor, supervisorEmail, terminationDate, workEmail, workPhone, zipcode

First Name
Last Name

{
"data": {
"id": "234",
"location": "New York Office"
}
}

Add Table Row

Adds a row to the specified table for an employee | key: addEmployeeTableRow

InputNotesExample
Connection
Employee ID42
Table Fields

The names of the fields and their values to use when creating/updating a row in a table. Use the "List Tabular Fields (Tables)" action to list possible field names for a table.

Table Name (Alias)jobInfo

{
"data": {
"id": "15"
}
}

Create Company File Category

Create a new company file category (folder) | key: addCompanyFileCategory

InputNotesExample
Category NameA new category
Connection

Create Employee File Category

Create a new employee file category (folder) | key: addEmployeeFileCategory

InputNotesExample
Category NameA new category
Connection

Create Webhook

Create a new webhook | key: createWebhook

InputNotesExample
Allow Duplicates?

By default this action checks if a webhook with this callback and sheet ID already exists. If it does, this action does not configure a new webhook. Toggle this to true to allow the creation of duplicate webhooks.

false
Connection
Fields to Monitor

Select one or more fields to trigger this webhook on. This can be any of the following: firstName, lastName, hireDate, department, middleName, dateOfBirth, ssn, address1, address2, city, state, zipcode, mobilePhone, homePhone, workEmail, jobTitle, location, gender, maritalStatus, payType, eeo, status, workPhone, workPhoneExtension, employeeNumber, ethnicity, division, homeEmail, preferredName, employeeStatusDate, country, payChangeReason, payRateEffectiveDate, exempt, twitterFeed, facebook, linkedIn, pinterest, acaStatus, payPer, originalHireDate, paySchedule, instagram, allergies, dietaryRestrictions, hoursPerPayCycle

Webhook Name
Fields to send to Webhook

A list of fields to post to the webhook url. This can be any of the following: firstName, lastName, hireDate, department, middleName, dateOfBirth, ssn, address1, address2, city, state, zipcode, mobilePhone, homePhone, workEmail, jobTitle, location, gender, maritalStatus, payType, eeo, status, workPhone, workPhoneExtension, employeeNumber, ethnicity, division, homeEmail, preferredName, employeeStatusDate, country, payChangeReason, payRateEffectiveDate, exempt, twitterFeed, facebook, linkedIn, pinterest, acaStatus, payPer, originalHireDate, paySchedule, instagram, allergies, dietaryRestrictions, hoursPerPayCycle

Callback URL

Where the data should be sent


Delete Company File

Delete an company file | key: deleteCompanyFile

InputNotesExample
Connection
File ID

Delete Employee File

Delete an employee file | key: deleteEmployeeFile

InputNotesExample
Connection
Employee ID42
File ID

Delete Instance Webhooks

Delete all BambooHR webhooks that point to a flow in this instance | key: deleteInstanceWebhooks

InputNotesExample
Connection

Delete Webhook

Delete a webhook by ID | key: deleteWebhookById

InputNotesExample
Connection
Webhook ID

Get an Employee's Table

Get a specific table associated with an employee | key: getEmployeeTable

InputNotesExample
Connection
Employee ID42
Table Name (Alias)jobInfo

{
"data": [
{
"id": "1",
"employeeId": "42",
"date": "2022-01-15",
"location": "New York Office",
"department": "Engineering",
"jobTitle": "Senior Developer"
}
]
}

Get Company File

Get an company file | key: getCompanyFile

InputNotesExample
Connection
File ID

Get Employee

Get an Employee | key: getEmployee

InputNotesExample
Connection
Employee ID42

{
"data": {
"id": "5",
"address1": "335 S 560 W",
"address2": null,
"age": "41",
"bestEmail": "aadams@efficientoffice.com",
"birthday": "07-28",
"city": "Lindon",
"country": "United States",
"dateOfBirth": "1981-07-28",
"department": "Human Resources",
"division": "Europe",
"employeeNumber": "2",
"employmentHistoryStatus": "Full-Time",
"ethnicity": "Two or More Races",
"exempt": "Exempt",
"firstName": "Ashley",
"fullName1": "Ashley Adams",
"fullName2": "Adams, Ashley",
"fullName3": "Adams, Ashley",
"fullName4": "Adams, Ashley",
"fullName5": "Ashley Adams",
"displayName": "Ashley Adams",
"gender": "Female",
"hireDate": "2022-02-20",
"originalHireDate": "0000-00-00",
"jobTitle": "HR Administrator",
"lastChanged": "2022-08-17T20:35:30+00:00",
"lastName": "Adams",
"location": "London, UK",
"maritalStatus": "Married",
"middleName": null,
"mobilePhone": "+44 207 555 6671",
"payRate": "50000.00 GBP",
"payRateEffectiveDate": "2022-02-20",
"payType": "Salary",
"paidPer": "Year",
"paySchedule": "Twice a month",
"payFrequency": "Twice a month",
"ssn": "545-66-7890",
"state": "UT",
"stateCode": "UT",
"status": "Active",
"supervisor": "Caldwell, Jennifer",
"supervisorEmail": "jcaldwell@efficientoffice.com",
"terminationDate": "0000-00-00",
"workEmail": "aadams@efficientoffice.com",
"workPhone": "+44 207 555 4730",
"zipcode": "84042"
}
}

Get Employee File

Get an employee file | key: getEmployeeFile

InputNotesExample
Connection
Employee ID42
File ID

Get Time Off Requests

Gets Employee Time Off Requests for a given date range. | key: getTimeOffRequests

InputNotesExample
Connection
Employee ID42
End DateYYYY-MM-DD
Start DateYYYY-MM-DD
Time Off Record ID42
Status

{
"data": [
{
"id": "1342",
"employeeId": "4",
"status": {
"lastChanged": "2022-04-10",
"lastChangedByUserId": "2369",
"status": "approved"
},
"name": "Charlotte Abbott",
"start": "2021-12-26",
"end": "2021-12-28",
"created": "2022-04-09",
"type": {
"id": "78",
"name": "Vacation",
"icon": "palm-trees"
},
"amount": {
"unit": "hours",
"amount": "24"
},
"actions": {
"view": true,
"edit": true,
"cancel": false,
"approve": false,
"deny": false,
"bypass": false
},
"dates": {
"2021-12-26": "24"
},
"notes": {
"manager": "Home sick with the flu."
}
}
]
}

List Company Files

List all company categories and files | key: listCompanyFiles

InputNotesExample
Connection

{
"data": {
"categories": [
{
"id": 179,
"canUploadFiles": "yes",
"name": "BambooHR",
"files": [
{
"id": 220,
"name": "4 Ways the BambooHR ATS Improves the Hiring Process",
"originalFileName": "4 Ways the BambooHR ATS Improves the Hiring Process.pdf",
"size": "855128",
"dateCreated": "2022-10-22T22:30:07+0000",
"createdBy": "Acme Developer",
"shareWithEmployees": "no",
"canRenameFile": "yes",
"canDeleteFile": "yes"
},
{
"id": 223,
"name": "5 Payroll Pain Points Solved by TRAXPayroll",
"originalFileName": "5 Payroll Pain Points.pdf",
"size": "523971",
"dateCreated": "2022-10-22T22:50:24+0000",
"createdBy": "Acme Developer",
"shareWithEmployees": "no",
"canRenameFile": "yes",
"canDeleteFile": "yes"
}
]
},
{
"id": 175,
"canUploadFiles": "yes",
"name": "New Hire Forms",
"files": [
{
"id": 164,
"name": "Australia Standard Choice Form.pdf",
"originalFileName": "Australia Standard Choice Form.pdf",
"size": "323487",
"dateCreated": "2022-07-01T15:15:33+0000",
"createdBy": null,
"shareWithEmployees": "no",
"canRenameFile": "yes",
"canDeleteFile": "yes"
}
]
}
]
}
}

List Employee Files

List all employee categories and files | key: listEmployeeFiles

InputNotesExample
Connection
Employee ID42

{
"data": {
"employee": {
"id": 4
},
"categories": [
{
"id": 12,
"name": "Signed Documents",
"canRenameCategory": "yes",
"canDeleteCategory": "yes",
"canUploadFiles": "yes",
"displayIfEmpty": "yes",
"files": [
{
"id": 4,
"name": "Company Handbook.pdf",
"originalFileName": "Company Handbook.pdf",
"size": 2807480,
"dateCreated": "2022-07-04T20:45:51+0000",
"createdBy": "Charlotte Abbott",
"shareWithEmployee": "yes",
"canRenameFile": "yes",
"canDeleteFile": "yes",
"canChangeShareWithEmployeeFieldValue": "yes"
},
{
"id": 10,
"name": "I-9 (2017).pdf",
"originalFileName": "I-9 (2017).pdf",
"size": 2750869,
"dateCreated": "2022-07-04T21:25:11+0000",
"createdBy": "Charlotte Abbott",
"shareWithEmployee": "yes",
"canRenameFile": "yes",
"canDeleteFile": "yes",
"canChangeShareWithEmployeeFieldValue": "yes"
}
]
},
{
"id": 10,
"name": "Workflow Attachments",
"canRenameCategory": "yes",
"canDeleteCategory": "yes",
"canUploadFiles": "yes",
"displayIfEmpty": "yes",
"files": []
}
]
}
}

List Employees

Get the employee directory | key: getEmployeeDirectory

InputNotesExample
Connection

{
"data": {
"fields": [
{
"id": "displayName",
"type": "text",
"name": "Display Name"
},
{
"id": "firstName",
"type": "text",
"name": "First Name"
},
{
"id": "lastName",
"type": "text",
"name": "Last Name"
},
{
"id": "gender",
"type": "text",
"name": "Gender"
},
{
"id": "jobTitle",
"type": "list",
"name": "Job Title"
},
{
"id": "workPhone",
"type": "text",
"name": "Work Phone"
},
{
"id": "workPhoneExtension",
"type": "text",
"name": "Work Extension"
},
{
"id": "skypeUsername",
"type": "text",
"name": "Skype Username"
},
{
"id": "facebook",
"type": "text",
"name": "Facebook URL"
}
],
"employees": [
{
"id": 123,
"displayName": "John Doe",
"firstName": "John",
"lastName": "Doe",
"gender": "Male",
"jobTitle": "Customer Service Representative",
"workPhone": "555-555-5555",
"workPhoneExtension": null,
"skypeUsername": "JohnDoe",
"facebook": "JohnDoeFacebook"
}
]
}
}

List Tabular Fields (Tables)

List all tables and their fields in the account | key: getTabularFields

InputNotesExample
Connection

{
"data": [
{
"alias": "jobInfo",
"fields": [
{
"id": 4028,
"name": "Job Information: Date",
"alias": "date",
"type": "date"
},
{
"id": 18,
"name": "Location",
"alias": "location",
"type": "list"
},
{
"id": 4,
"name": "Department",
"alias": "department",
"type": "list"
},
{
"id": 1355,
"name": "Division",
"alias": "division",
"type": "list"
},
{
"id": 17,
"name": "Job Title",
"alias": "jobTitle",
"type": "list"
},
{
"id": 91,
"name": "Reporting to",
"alias": "reportsTo",
"type": "employee"
}
]
}
]
}

List Webhooks

Get a list of existing webhooks | key: listWebhooks

InputNotesExample
Connection
Show only instance webhooks

Show only webhooks that point to this instance

true

List Who's Out

Get a list of all employees currently taking time off | key: whosOut

InputNotesExample
Connection
End Date

Defaults to 14 days from start date if omitted

YYYY-MM-DD
Start Date

Defaults to today's date if omitted

YYYY-MM-DD

{
"data": [
{
"id": 1493,
"type": "timeOff",
"employeeId": 17,
"name": "Dorothy Chou",
"start": "2022-08-17",
"end": "2022-08-18"
}
]
}

Raw Request

Send raw HTTP request to BambooHR | key: rawRequest

InputNotesExample
Connection
Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
Debug Request

Enabling this flag will log out the current request.

false
File Data

File Data to be sent as a multipart form upload.

[{key: "example.txt", value: "My File Contents"}]
File Data File Names

File names to apply to the file data inputs. Keys must match the file data keys above.

Form Data

The Form Data to be sent as a multipart form upload.

[{"key": "Example Key", "value": new Buffer("Hello World")}]
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Max Retry Count

The maximum number of retries to attempt. Specify 0 for no retries.

0
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Retry On All Errors

If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors.

false
Retry Delay (ms)

The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled.

0
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/v1/employees/directory), The base URL is already included (https://api.bamboohr.com/api/gateway.php/COMPANY_DOMAIN). For example, to connect to https://api.bamboohr.com/api/gateway.php/COMPANY_DOMAIN/v1/employees/directory, only /v1/employees/directory is entered in this field.

/v1/employees/directory
Use Exponential Backoff

Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored.

false

Update Employee

Update an existing employee | key: updateEmployee

InputNotesExample
Connection
Employee Fields

The names of the fields and their values to use when creating/updating a record. Possible fields are: address1, address2, age, bestEmail, birthday, city, country, dateOfBirth, department, division, employeeNumber, employmentHistoryStatus, ethnicity, exempt, firstName, fullName1, fullName2, fullName3, fullName4, fullName5, displayName, gender, hireDate, originalHireDate, id, jobTitle, lastChanged, lastName, location, maritalStatus, middleName, mobilePhone, nationality, payGroup, payRate, payRateEffectiveDate, payType, paidPer, paySchedule, payFrequency, includeInPayroll, timeTrackingEnabled, ssn, sin, standardHoursPerWeek, state, stateCode, status, supervisor, supervisorEmail, terminationDate, workEmail, workPhone, zipcode

Employee ID42

{
"data": {
"id": "42",
"fields": [
{
"id": "jobTitle",
"value": "Senior Developer"
}
]
}
}

Update Employee Table Row

Updates a specific row in an Employee Table | key: updateEmployeeTableRow

InputNotesExample
Connection
Employee ID42
Row ID
Table Fields

The names of the fields and their values to use when creating/updating a row in a table. Use the "List Tabular Fields (Tables)" action to list possible field names for a table.

Table Name (Alias)jobInfo

{
"data": {
"id": "15",
"employeeId": "42"
}
}

Upload Company File

Upload a new company file | key: uploadCompanyFile

InputNotesExample
Category ID20
Connection
File contents
File Nameexample.pdf
Share?false

Upload Employee File

Upload a new employee file | key: uploadEmployeeFile

InputNotesExample
Category ID20
Connection
Employee ID42
File contents
File Nameexample.pdf
Share?false

Changelog

2025-01-03

Added data sources and inline data sources for employees