openapi: '3.1.0'
# API metadata
info:
title: BambooHR API
version: 1.0.0
description: >-
BambooHR provides companies a human capital management software as a
service.
contact:
name: BambooHR
email: support@bamboohr.com
url: https://www.bamboohr.com/contact.php
x-twitter: bamboohr
termsOfService: https://www.bamboohr.com/terms-of-service/
license:
name: BambooHR API Terms of Use
url: https://partners.bamboohr.com/bamboohr-api-terms-of-use/
# APIs.guru Extensions
# https://github.com/APIs-guru/openapi-directory/wiki/specification-extensions
x-apiClientRegistration: https://www.bamboohr.com/signup/
x-apisguru-categories:
- enterprise
x-description-language: en
# More logos at https://www.bamboohr.com/about/press.php#mediaAssets
x-logo:
backgroundColor: '#FFFFFF'
url: https://www.bamboohr.com/img/new-press-images/bamboohr-green-png.png
x-unofficialSpec: true
externalDocs:
description: BambooHR API Documentation
url: https://documentation.bamboohr.com/docs
servers:
- url: https://api.bamboohr.com/api/gateway.php/{subdomain}
variables:
subdomain:
default: mycompany
description: >-
The subdomain used to access your account (If you access BambooHR at
https://mycompany.bamboohr.com, then the subdomain is "mycompany")
security:
- apiKey: []
tags:
- name: Benefits
description: >-
There are two primary entities when dealing with benefits: Benefit Plans
and Benefit Groups.
Benefit Plans define the Type (medical, dental, etc.), Coverage options
(employee, employee + spouse, etc.), and Total Monthly Costs (i.e. the
premium). Each plan will also show when it went into effect and when it is
set to expire. Plans must be configured before you can create Benefit
Groups.
Benefit Groups allow you to create a customizable benefit package for
specific employee groupings. For example, you may want to have a Benefit
Group for all of your full time employees for which you include a Medical,
Dental, Vision, and 401K plan. You could then have a separate Benefit Group
for your part time employees which allows for Medical only. Plan
eligibility rules and group-specific employee pays and company pays amounts
are set in benefit groups (with the exception of plans where pays
information is set at the employee level).
In addition to getting benefit information through the API, you can also
get employee deductions for a given plan and define the dependents
associated with your employees. You cannot currently enroll employees or
change benefit status through the API.
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php
- name: Changes
description: >-
The Last Changed API allows you to discover which employees have been
recently added, changed, or deleted. Any change to any field inside an
employee record will count as an update. Insert events are only recorded
when an employee record is first created. Delete events are only recorded
when an employee record is deleted.
**Note:** Last change timestamps are a newer feature in BambooHR. We
started recording these dates on June 5th, 2011. We do not have last
changed data for any changes that occurred before this date.
externalDocs:
url: https://www.bamboohr.com/api/documentation/changes.php
- name: Employees
description: >-
Operations for adding and retrieving employee information, and associated
files.
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php
- name: Login
description: >-
Access control to the API is always controlled by an API key that
identifies a particular user. Usually, this API key is generated on the
website and then copied into your third party application. It is now
possible for registered applications to generate new API keys for each user
on the fly by making a special API request.
**Note:** Each application using this approach is required to provide an
application key to identify what application is requesting the API key. For
more information on obtaining application keys please contact
support@bamboohr.com.
**Note:** If you already have an API key, you do not need to use the Login
API.
externalDocs:
url: https://www.bamboohr.com/api/documentation/login.php
- name: Metadata
description: >-
The Metadata API allows you to retrieve "data about data" for a given
BambooHR account. You can determine what fields a customer is using. You
can determine what options are available in a list. You can determine what
users are able to access the system.
Metadata is important because BambooHR is highly configurable. A given
customer's account may have drastically different settings from another
customer. Using this API, you can determine what values the account
supports.
Read only access to metadata does not require any special permissions. When
write access to metadata is supported then the user will need the
appropriate permissions to create new users, for example.
externalDocs:
url: https://www.bamboohr.com/api/documentation/metadata.php
- name: Payroll
description: >-
There are four primary entities used in building the BambooHR paystub
experience:
- Raw paystub data
- Pay period dates (past, current, and future)
- Direct deposit settings
- Tax withholding settings
All of the information displayed as part of the paystub experience is
read-only, although employees may navigate through paystub history, view
specific paystub details, and then download or print the paystub.
Raw paystub data (income, withholdings, deductions, etc.) and pay period
data (past, present, and future) are required to generate the primary
paystub experience in BambooHR. Direct deposit and tax withholding data
completes the experience for the employee, but is not critical. If no
direct deposit or tax withholding data are provided, those portions of the
experience will not be displayed to the employee user.
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php
- name: Photos
description: >-
The Photos API allows you to retrieve employee photos. There is a standard
API-based mechanism for retrieving the photo binary data.
externalDocs:
url: https://www.bamboohr.com/api/documentation/photos.php
- name: Tables
description: >-
Some data in the BambooHR system is stored as a two dimensional grid for
each employee. The tables API allows you to grab tabular data for the
various tables in BambooHR. For standard tables, a series of fields will be
outlined below. API support for custom tables will be added in a future
release.
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php
- name: TimeOff
description: >-
There are two primary entities when dealing with time off. The requests and
the history.
Requests represent a request from an employee to take time off. A request
needs to be approved before it will be recorded into the history. A user
with sufficient permissions can create a request and mark it approved at
the same time.
The history is log of all events that effect an employee's balance. The
current balance of time off is the sum of all events in the history. Time
off used decreases the total, while time off accruals increase it.
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_off.php
- name: TimeTracking
description: >-
The time tracking API is used to send approved hours worked to BambooHR,
similar to how you would send hours to a payroll company. These hours are
stored in BambooHR and can be used to accrue paid time off using BambooHR’s
accrual feature, and/or sent to a BambooHR payroll partner during the
payroll run. This makes it possible for the customer to use BambooHR as the
source of all payroll related data.
Time records can be added to BambooHR or can be retrieved from BambooHR.
When adding time records to BambooHR, certain fields are required with each
entry such as a date, associated pay rate, and a rate type (see
documentation below). Identifying information for the employee is also
required so the hours may be associated with the proper employee in
BambooHR. Lists of employees and their accompanying identifying information
can be retrieved through our api (see Single Dimensional Data).
Please note that only approved hours should be sent to BambooHR since there
will be no distinction of approved or not-approved in BambooHR. If
non-approved hours are sent to BambooHR, accruals may occur on those hours
and they also may be passed to payroll. Edits to approved hours (additions
or subtractions) should be sent as new records with their associated date
(the date of the hours worked).
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_tracking.php
components:
securitySchemes:
apiKey:
description: >-
Requests to the BambooHR API are authenticated by sending an "API Key"
for the user to be authenticated as the HTTP Basic username. The
password is ignored, but is commonly shown as "x" in the documentation.
See https://documentation.bamboohr.com/docs#section-authentication
type: http
scheme: basic
parameters:
benefitCoverageId:
name: id
in: path
description: Benefit Coverage ID
required: true
schema:
type: integer
minimum: 1
benefitGroupEmployeeId:
name: id
in: path
description: Benefit Group Employee ID
required: true
schema:
type: integer
minimum: 1
benefitGroupId:
name: id
in: path
description: Benefit Group ID
required: true
schema:
type: integer
minimum: 1
benefitGroupPlanCostId:
name: id
in: path
description: Benefit Group Plan Cost ID
required: true
schema:
type: integer
minimum: 1
benefitGroupPlanId:
name: id
in: path
description: Benefit Group Plan ID
required: true
schema:
type: integer
minimum: 1
benefitPlanCoverageId:
name: id
in: path
description: Benefit Plan Coverage ID
required: true
schema:
type: integer
minimum: 1
benefitPlanId:
name: id
in: path
description: Benefit Plan ID
required: true
schema:
type: integer
minimum: 1
changeType:
name: type
in: query
description: Limit changes to a given type
schema:
$ref: '#/components/schemas/ChangeType'
companyFileId:
name: fileId
in: path
description: ID of a company file
required: true
schema:
type: integer
minimum: 1
dependentId:
name: id
in: path
description: Dependent ID
required: true
schema:
type: integer
minimum: 1
employeeFields:
name: fields
in: query
description: >-
Employee fields to return in the response.
Note: The id field is always returned.
# Note: the parameter is technically not required (getEmployee would
# return just the id or 404), but it would make the generated API easy to
# misuse. Since the same response results from an empty array, make this
# property required to reduce misuse.
required: true
explode: false
schema:
type: array
items:
type: string
employeeFileId:
name: fileId
in: path
description: ID of an employee file
required: true
schema:
type: integer
minimum: 1
employeeId:
name: id
in: path
description: Employee ID
required: true
schema:
type: integer
minimum: 1
employeeIdFilter:
name: employeeid
in: query
description: Limit response to a given Employee ID
schema:
type: integer
minimum: 1
endDate:
name: end
in: query
description: End date of (inclusive) date range to include
required: true
schema:
type: string
format: date
fieldId:
name: id
in: path
description: Field ID to update
required: true
schema:
type: integer
minimum: 1
filterDuplicates:
name: fd
in: query
description: Apply standard duplicate field filtering? Default yes
schema:
$ref: '#/components/schemas/YesNo'
hashedEmail:
name: h
in: query
description: >-
The hash of the employee's work email. If they don't have a work email
then the hash of the home email will work. If they do have a work email
then the home email will not work.
The email address must be representable in ASCII.
The hash is computed as the following md5(strtolower(trim($email))),
where the trim() function eliminates ASCII whitespace, the strtolower()
function converts ASCII text to lowercase and the md5 function produces
a hex string representing the MD5 hash of the data. In PHP you can use
these exact functions, in other languages there will be equivalent
functions you can use.
required: true
schema:
type: string
pattern: '^[a-f0-9]{32}$'
photoSize:
name: size
in: path
description: Photo size
required: true
schema:
$ref: '#/components/schemas/PhotoSize'
precision:
name: precision
in: query
description: Number of digits after the decimal point to include.
schema:
type: integer
minimum: 0
reportFormat:
name: format
in: query
description: File format of the report.
required: true
schema:
$ref: '#/components/schemas/ReportFormat'
reportId:
name: id
in: path
description: Report ID
required: true
schema:
type: integer
minimum: 1
rowId:
name: rowId
in: path
description: Row ID
required: true
schema:
type: integer
minimum: 1
since:
name: since
in: query
description: Get changes since a given date
required: true
schema:
type: string
format: date-time
startDate:
name: start
in: query
description: Start date of (inclusive) date range to include
required: true
schema:
type: string
format: date
timeOffRequestAction:
name: action
in: query
description: Limit to requests that the user has a particular level of access to.
schema:
$ref: '#/components/schemas/TimeOffRequestAction'
timeOffRequestEmployeeId:
name: employeeId
in: query
description: Limit response to a given employee ID
schema:
type: integer
minimum: 1
timeOffRequestId:
name: id
in: path
description: Time off request ID
required: true
schema:
type: integer
minimum: 1
timeOffRequestIdQuery:
name: id
in: query
description: Limit response to a given time off request ID
schema:
type: integer
minimum: 1
timeOffRequestStatus:
name: status
in: query
description: Time off request statuses to include
schema:
$ref: '#/components/schemas/TimeOffRequestStatus'
timeOffType:
name: type
in: query
description: Time off types to include
schema:
$ref: '#/components/schemas/TimeOffTypeId'
timeOffTypesMode:
name: mode
in: query
description: >-
Set to "request" to get a list of all time off types with which this
user can create a time off request. The default is to return the list
of time off types the user has permissions on. This distinction is
important, as employees can request time off for types that they don't
have permission to view balances and requests for.
schema:
$ref: '#/components/schemas/TimeOffTypesMode'
timeTrackingId:
name: id
in: path
description: Time Tracking ID
required: true
schema:
$ref: '#/components/schemas/TimeTrackingId'
whoIsOutEndDate:
name: end
in: query
description: >-
End of the date range to consider.
Defaults to 14 days from the start date.
schema:
type: string
format: date
whoIsOutStartDate:
name: start
in: query
description: >-
Start of the date range to consider.
Defaults to current date.
schema:
type: string
format: date
schemas:
YesNo:
type: string
enum:
- "yes"
- "no"
YesNoDoesNotApply:
type: string
enum:
- "yes"
- "no"
- does not apply
YesNoNonAssessment:
type: string
enum:
- "yes"
- "no"
- non-assessment
# Not yet observed in API responses. Schema based on
# https://documentation.bamboohr.com/docs/planned-changes-to-the-api#section-20191001-acastatus-field-deprecation
AcaStatusCategory:
type: string
enum:
- contractor
- full-time
- intern-compensated
- intern-not-compensated
- part-time-eligible
- part-time-ineligible
- seasonal
- terminated
AccountType:
type: string
enum:
- checking
- savings
- other
ChangeType:
type: string
enum:
- Deleted
- Inserted
- Updated
CurrencyCode:
description: ISO 4217 currency code supported by BambooHR
type: string
# Extracted from /ajax/currency.php response
enum:
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BRL
- BSD
- BWP
- BYR
- BZD
- CAD
- CDF
- CHF
- CLP
- CNY
- COP
- CRC
- CUP
- CZK
- DKK
- DOP
- DZD
- ECS
- EEK
- EGP
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GGP
- GHC
- GHS
- GIP
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- IMP
- INR
- IQD
- IRR
- ISK
- JEP
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LTL
- LVL
- MAD
- MCR
- MKD
- MMK
- MNT
- MOP
- MUR
- MWK
- MXN
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SVC
- SYP
- THB
- TND
- TOP
- TRL
- TRY
- TTD
- TVD
- TWD
- TZS
- UAH
- UGX
- USD
- UYU
- UZS
- VEF
- VES
- VND
- VUV
- XAF
- XCD
- XOF
- YER
- ZAR
- ZMW
- ZWD
x-enum-descriptions:
- UAE dirham
- Afghanistan Afghani
- Albania Lek
- Armenian Dram
- Netherlands Antilles Guilder
- Angolan Kwanza
- Argentine Peso
- Australian Dollar
- Aruba Guilder
- Azerbaijan New Manat
- Bosnia and Herzegovina Convertible Marka
- Barbados Dollar
- Bangladeshi Taka
- Bulgaria Lev
- Bahraini Dinar
- Burundian Franc
- Bermuda Dollar
- Brunei Darussalam Dollar
- Bolivia Boliviano
- Brazilian Real
- Bahamas Dollar
- Botswana Pula
- Belarus Ruble
- Belize Dollar
- Canadian Dollar
- Congolese Francs
- Swiss Franc
- Chile Peso
- Chinese Yuan Renminbi
- Colombia Peso
- Costa Rica Colon
- Cuba Peso
- Czech Republic Koruna
- Denmark Krone
- Dominican Republic Peso
- Algerian Dinar
- Ecuadorian Sucres
- Estonia Kroon
- Egypt Pound
- Ethiopian Birr
- Euro
- Fiji Dollar
- Falkland Islands (Malvinas) Pound
- British Pound
- Georgian Lari
- Guernsey Pound
- Ghana Cedis
- Ghanaian Cedi
- Gibraltar Pound
- Guinean Franc
- Guatemala Quetzal
- Guyana Dollar
- Hong Kong Dollar
- Honduras Lempira
- Croatia Kuna
- Haitian Gourde
- Hungary Forint
- Indonesian Rupiah
- Israel Shekel
- Isle of Man Pound
- Indian Rupee
- Iraqui Dinar
- Iran Rial
- Iceland Krona
- Jersey Pound
- Jamaica Dollar
- Jordanian Dinar
- Yen
- Kenyan Shilling
- Kyrgyzstan Som
- Cambodia Riel
- Korea (North) Won
- South Korean Won
- Kuwaiti Dinar
- Cayman Islands Dollar
- Kazakhstan Tenge
- Laos Kip
- Lebanon Pound
- Sri Lanka Rupee
- Liberia Dollar
- Lithuania Litas
- Latvia Lat
- Moroccan dirham
- Maldivian Rufiyaa
- Macedonia Denar
- Burmese Kyat
- Mongolia Tughrik
- Macau Pataca
- Mauritius Rupee
- Malawian Kwacha
- Mexican Peso
- Malaysian ringgit
- Mozambique Metical
- Namibia Dollar
- Nigerian Naira
- Nicaragua Cordoba
- Norway Krone
- Nepal Rupee
- New Zealand Dollar
- Oman Rial
- Panama Balboa
- Peru Nuevo Sol
- Papua New Guinean Kina
- Philippine Peso
- Pakistani Rupee
- Polish złoty
- Paraguay Guarani
- Qatari Riyal
- Romania New Leu
- Serbia Dinar
- Russia Ruble
- Rwandan Franc
- Saudi Arabia Riyal
- Solomon Islands Dollar
- Seychelles Rupee
- Sudanese Pound
- Swedish Krona
- Singapore Dollar
- Saint Helena Pound
- Sierra Leonean Leone
- Somalia Shilling
- Suriname Dollar
- El Salvador Colon
- Syria Pound
- Thai Baht
- Tunisian dinar
- Tongan pa'anga
- Turkey Lira
- Turkey Lira
- Trinidad and Tobago Dollar
- Tuvalu Dollar
- Taiwan New Dollar
- Tanzanian Shilling
- Ukraine Hryvna
- Uganda Shilling
- US Dollar
- Uruguay Peso
- Uzbekistan Som
- Venezuela Bolivar Fuerte
- Venezuelan Bolívar Soberano
- Vietnamese đồng
- Vanuatu Vatu
- Central African Franc
- East Caribbean Dollar
- West African Franc
- Yemen Rial
- South African Rand
- Zambian Kwacha
- Zimbabwe Dollar
CurrencyAmount:
type: object
properties:
value:
type: string
format: decimal
currency:
$ref: '#/components/schemas/CurrencyCode'
required:
- currency
- value
CurrencyAmountString:
description: >-
String representing an amount of a particular currency.
Note: In some fields the number can be omitted (e.g. in bonusAmount)
presumably this should be interpreted as 0.
type: string
pattern: '^([0-9]+(\.[0-9]+)?)? [A-Z]{3}$'
EmployeeFieldName:
description: Property names of the Employee schema.
type: string
# Note: enum values are generated from Employee as a build step
# After any company-specific fields are added
EmployeeFieldType:
type: string
enum:
- aca_status
- benefit_group
- benefit_history
- bonus
- checkbox
- contact_url
- country
- currency
- date
- email
- employee
- employee_access
- employee_contacts
- employee_number
- exempt
- gender
- int
- list
- marital_status
- multilist
- paid_per
- pay_period
- pay_type
- percentage
- phone
- relationship
- ssn
- state
- status
- text
- textarea
- time_off_type
- time_off_type_exists
- training_type
- twitter_handle
CompensationChangeReason:
description: >-
Compensation Change Reason list values, as defined in Employee Fields
Settings and Lists in the Metadata API.
type: string
Country:
description: Countries recognized by BambooHR
type: string
# Note: Order and count must match CountryCode
enum:
- Afghanistan
- Albania
- Algeria
- American Samoa
- Andorra
- Angola
- Anguilla
- Antarctica
- Antigua and Barbuda
- Argentina
- Armenia
- Aruba
- Australia
- Austria
- Azerbaijan
- Åland Islands
- Bahamas
- Bahrain
- Bangladesh
- Barbados
- Belarus
- Belgium
- Belize
- Benin
- Bermuda
- Bhutan
- Bolivia
- Bonaire, Sint Eustatius and Saba
- Bosnia and Herzegovina
- Botswana
- Bouvet Island
- Brazil
- British Indian Ocean Territory
- Brunei Darussalam
- Bulgaria
- Burkina Faso
- Burundi
- Cambodia
- Cameroon
- Canada
- Cape Verde
- Cayman Islands
- Central African Republic
- Chad
- Chile
- China
- Christmas Island
- Cocos (Keeling Islands)
- Colombia
- Comoros
- Congo
- Congo, the Democratic Republic of the
- Cook Islands
- Costa Rica
- Cote D'Ivoire (Ivory Coast)
- Croatia (Hrvatska)
- Cuba
- Curaçao
- Cyprus
- Czech Republic
- Denmark
- Djibouti
- Dominica
- Dominican Republic
- East Timor
- Ecuador
- Egypt
- El Salvador
- Equatorial Guinea
- Eritrea
- Estonia
- Ethiopia
- Falkland Islands (Malvinas)
- Faroe Islands
- Fiji
- Finland
- France
- France, Metropolitan
- French Guiana
- French Polynesia
- French Southern Territories
- French West Indies
- Gabon
- Gambia
- Georgia
- Germany
- Ghana
- Gibraltar
- Greece
- Greenland
- Grenada
- Guadeloupe
- Guam
- Guatemala
- Guernsey
- Guinea
- Guinea-Bissau
- Guyana
- Haiti
- Heard and McDonald Islands
- Honduras
- Hong Kong
- Hungary
- Iceland
- India
- Indonesia
- Iran
- Iraq
- Ireland
- Isle of Man
- Israel
- Italy
- Jamaica
- Japan
- Jersey
- Jordan
- Kazakhstan
- Kenya
- Kiribati
- Korea (North)
- Korea (South)
- Kosovo
- Kuwait
- Kyrgyzstan
- Laos
- Latvia
- Lebanon
- Lesotho
- Liberia
- Libya
- Liechtenstein
- Lithuania
- Luxembourg
- Macao
- Macedonia
- Madagascar
- Malawi
- Malaysia
- Maldives
- Mali
- Malta
- Marshall Islands
- Martinique
- Mauritania
- Mauritius
- Mayotte
- Mexico
- Micronesia
- Moldova
- Monaco
- Mongolia
- Montenegro
- Montserrat
- Morocco
- Mozambique
- Myanmar
- Namibia
- Nauru
- Nepal
- Netherlands
- Netherlands Antilles
- New Caledonia
- New Zealand
- Nicaragua
- Niger
- Nigeria
- Niue
- Norfolk Island
- Northern Mariana Islands
- Norway
- Oman
- Pakistan
- Palau
- Palestinian Territories
- Panama
- Papua New Guinea
- Paraguay
- Peru
- Philippines
- Pitcairn
- Poland
- Portugal
- Puerto Rico
- Qatar
- Reunion
- Romania
- Russian Federation
- Rwanda
- Saint Barthélemy
- Saint Kitts and Nevis
- Saint Lucia
- Saint Vincent and the Grenadines
- Samoa
- San Marino
- Sao Tome and Principe
- Saudi Arabia
- Senegal
- Serbia
- Seychelles
- Sierra Leone
- Singapore
- Sint Maarten (Dutch part)
- Slovakia
- Slovenia
- Solomon Islands
- Somalia
- South Africa
- South Georgia and the South Sandwich Islands
- South Sudan
- Spain
- Sri Lanka
- St. Helena
- St. Pierre and Miquelon
- Sudan
- Suriname
- Svalbard
- Swaziland
- Sweden
- Switzerland
- Syria
- Taiwan
- Tajikistan
- Tanzania
- Thailand
- Togo
- Tokelau
- Tonga
- Trinidad and Tobago
- Tunisia
- Turkey
- Turkmenistan
- Turks and Caicos Islands
- Tuvalu
- Uganda
- Ukraine
- United Arab Emirates
- United Kingdom
- United States
- Uruguay
- US Minor Outlying Islands
- Uzbekistan
- Vanuatu
- Vatican City State
- Venezuela
- Viet Nam
- Virgin Islands (British)
- Virgin Islands, U.S.
- Wallis and Futuna Islands
- Western Sahara
- Yemen
- Yugoslavia
- Zaire
- Zambia
- Zimbabwe
CountryCode:
description: |-
2-letter country codes recognized by BambooHR.
Based on ISO 3166-2, with some previously removed entries:
- AN for Netherlands Antilles
- FX for France, Metropolitan
- YU for Yugoslavia
- ZR for Zaire
And some non-standard additions:
- XK for Kosovo
type: string
# Note: Order and count must match Country
enum:
- AF
- AL
- DZ
- AS
- AD
- AO
- AI
- AQ
- AG
- AR
- AM
- AW
- AU
- AT
- AZ
- AX
- BS
- BH
- BD
- BB
- BY
- BE
- BZ
- BJ
- BM
- BT
- BO
- BQ
- BA
- BW
- BV
- BR
- IO
- BN
- BG
- BF
- BI
- KH
- CM
- CA
- CV
- KY
- CF
- TD
- CL
- CN
- CX
- CC
- CO
- KM
- CG
- CD
- CK
- CR
- CI
- HR
- CU
- CW
- CY
- CZ
- DK
- DJ
- DM
- DO
- TL
- EC
- EG
- SV
- GQ
- ER
- EE
- ET
- FK
- FO
- FJ
- FI
- FR
- FX
- GF
- PF
- TF
- MF
- GA
- GM
- GE
- DE
- GH
- GI
- GR
- GL
- GD
- GP
- GU
- GT
- GG
- GN
- GW
- GY
- HT
- HM
- HN
- HK
- HU
- IS
- IN
- ID
- IR
- IQ
- IE
- IM
- IL
- IT
- JM
- JP
- JE
- JO
- KZ
- KE
- KI
- KP
- KR
- XK
- KW
- KG
- LA
- LV
- LB
- LS
- LR
- LY
- LI
- LT
- LU
- MO
- MK
- MG
- MW
- MY
- MV
- ML
- MT
- MH
- MQ
- MR
- MU
- YT
- MX
- FM
- MD
- MC
- MN
- ME
- MS
- MA
- MZ
- MM
- NA
- NR
- NP
- NL
- AN
- NC
- NZ
- NI
- NE
- NG
- NU
- NF
- MP
- 'NO'
- OM
- PK
- PW
- PS
- PA
- PG
- PY
- PE
- PH
- PN
- PL
- PT
- PR
- QA
- RE
- RO
- RU
- RW
- BL
- KN
- LC
- VC
- WS
- SM
- ST
- SA
- SN
- RS
- SC
- SL
- SG
- SX
- SK
- SI
- SB
- SO
- ZA
- GS
- SS
- ES
- LK
- SH
- PM
- SD
- SR
- SJ
- SZ
- SE
- CH
- SY
- TW
- TJ
- TZ
- TH
- TG
- TK
- TO
- TT
- TN
- TR
- TM
- TC
- TV
- UG
- UA
- AE
- GB
- US
- UY
- UM
- UZ
- VU
- VA
- VE
- VN
- VG
- VI
- WF
- EH
- YE
- YU
- ZR
- ZM
- ZW
Department:
description: >-
Department list values, as defined in Employee Fields Settings and
Lists in the Metadata API.
type: string
DependentRelationship:
type: string
enum:
- spouse
- child
- domestic partner
- step child
- foster child
DirectDepositRuleType:
type: string
enum:
- BAL
- FLAT
- PCT
x-enum-descriptions:
- Balance
- Flat Amount
- Percentage
x-enum-varnames:
- Balance
- FlatAmount
- Percentage
Division:
description: >-
Division list values, as defined in Employee Fields Settings and
Lists in the Metadata API.
type: string
EEOJobCategory:
description: >-
U.S. Equal Employment Opportunity Commission Job Categories
https://www.eeoc.gov/employers/eeo1survey/jobclassguide.cfm
type: string
enum:
- First/Mid Level Officials and Managers
- Sales Workers
- Administrative Support Workers
- Craft Workers
- Executive/Senior Level Officials and Managers
- Laborers and Helpers
- Operatives
- Professionals
- Service Workers
- Technicians
EmergencyContactRelationship:
description: >-
Emergency Contact Relationship list values, as defined in Employee
Fields Settings and Lists in the Metadata API.
type: string
EmployeeStatus:
type: string
enum:
- Active
- Inactive
EmploymentStatus:
description: >-
Employment Status list values, as defined in Employee Fields Settings
and Lists in the Metadata API.
type: string
Ethnicity:
type: string
enum:
- American Indian or Alaska Native
- Asian
- Black or African American
- Hispanic or Latino
- Native Hawaiian or Other Pacific Islander
- Two or More Races
- White
Gender:
type: string
enum:
- Female
- Male
JobTitle:
description: >-
Job Title list values, as defined in Employee Fields Settings and
Lists in the Metadata API.
type: string
Location:
description: >-
Location list values, as defined in Employee Fields Settings and
Lists in the Metadata API.
type: string
MaritalStatus:
type: string
enum:
- Single
- Married
- Common Law
- Domestic Partnership
OvertimeExemptStatus:
type: string
enum:
- Exempt
- Non-exempt
PayFrequency:
type: string
enum:
- Weekly
- Every other week
- Twice a month
- Monthly
- Quarterly
- Twice a year
- Yearly
PayGroup:
description: >-
Pay Groups list values, as defined in Employee Fields Settings and
Lists in the Metadata API.
https://{company}.bamboohr.com/settings/list.php?id=pay_group
type: string
PayGroupPayFrequency:
type: string
enum:
- daily
- weekly
- bi-weekly
- semi-monthly
- monthly
- quarterly
- semi-annually
- annually
PayPer:
type: string
enum:
- Hour
- Day
- Week
- Month
- Quarter
- Year
PaySchedule:
description: >-
Pay schedules, as defined in Employee Fields Settings
https://{company}.bamboohr.com/settings/pay_schedules
type: string
PayType:
type: string
enum:
- Hourly
- Salary
- Commission
- Exception Hourly
- Monthly
- Piece Rate
- Contract
- Daily
PhotoSize:
type: string
enum:
- original
- large
- medium
- small
- tiny
x-enum-descriptions:
- Original size
- 340x340
- 170x170
- 150x150
- 20x20
ProvinceCode:
description: >-
Canadian province codes recognized by BambooHR.
Matches postal abbreviations for states and possessions,
excluding military abbreviations (AA, AE, AP)
type: string
enum:
- AB
- BC
- MB
- NB
- NL
- NS
- NT
- NU
- "ON"
- PE
- QC
- SK
- YT
x-enum-descriptions:
- Alberta
- British Columbia
- Manitoba
- New Brunswick
- Newfoundland and Labrador
- Nova Scotia
- Northwest Territories
- Nunavut
- Ontario
- Prince Edward Island
- Quebec
- Saskatchewan
- Yukon
ProvinceName:
description: Canadian province names recognized by BambooHR.
type: string
x-ms-enum:
name: ProvinceName
modelAsString: true
enum:
- Alberta
- British Columbia
- Manitoba
- New Brunswick
- Newfoundland and Labrador
- Nova Scotia
- Northwest Territories
- Nunavut
- Ontario
- Prince Edward Island
- Quebec
- Saskatchewan
- Yukon
ReimbursementFrequency:
type: string
enum:
- pay period
- month
- quarter
- year
- one time
SocialInsuranceNumber:
description: Canadian Social Insurance number
type: string
format: sin
pattern: '^[0-9]{3}-[0-9]{3}-[0-9]{3}$'
SocialSecurityNumber:
description: Social Security number
type: string
format: ssn
pattern: '^[0-9]{3}-[0-9]{2}-[0-9]{4}$'
StateCode:
description: >-
State codes recognized by BambooHR.
Matches postal abbreviations for states and possessions,
excluding military abbreviations (AA, AE, AP)
type: string
enum:
- ""
- AL
- AK
- AS
- AZ
- AR
- CA
- CO
- CT
- DE
- DC
- FM
- FL
- GA
- GU
- HI
- ID
- IL
- IN
- IA
- KS
- KY
- LA
- ME
- MH
- MD
- MA
- MI
- MN
- MS
- MO
- MT
- NE
- NV
- NH
- NJ
- NM
- NY
- NC
- ND
- MP
- OH
- OK
- OR
- PW
- PA
- PR
- RI
- SC
- SD
- TN
- TX
- UT
- VT
- VI
- VA
- WA
- WV
- WI
- WY
x-enum-descriptions:
- None
- Alabama
- Alaska
- American Samoa
- Arizona
- Arkansas
- California
- Colorado
- Connecticut
- Delaware
- District of Columbia
- Federated States of Micronesia
- Florida
- Georgia
- Guam
- Hawaii
- Idaho
- Illinois
- Indiana
- Iowa
- Kansas
- Kentucky
- Louisiana
- Maine
- Marshall Islands
- Maryland
- Massachusetts
- Michigan
- Minnesota
- Mississippi
- Missouri
- Montana
- Nebraska
- Nevada
- New Hampshire
- New Jersey
- New Mexico
- New York
- North Carolina
- North Dakota
- Northern Mariana Islands
- Ohio
- Oklahoma
- Oregon
- Palau
- Pennsylvania
- Puerto Rico
- Rhode Island
- South Carolina
- South Dakota
- Tennessee
- Texas
- Utah
- Vermont
- Virgin Islands
- Virginia
- Washington
- West Virginia
- Wisconsin
- Wyoming
x-enum-varnames:
- None
- AL
- AK
- AS
- AZ
- AR
- CA
- CO
- CT
- DE
- DC
- FM
- FL
- GA
- GU
- HI
- ID
- IL
- IN
- IA
- KS
- KY
- LA
- ME
- MH
- MD
- MA
- MI
- MN
- MS
- MO
- MT
- NE
- NV
- NH
- NJ
- NM
- NY
- NC
- ND
- MP
- OH
- OK
- OR
- PW
- PA
- PR
- RI
- SC
- SD
- TN
- TX
- UT
- VT
- VI
- VA
- WA
- WV
- WI
- WY
StateName:
description: State names recognized by BambooHR.
type: string
x-ms-enum:
name: StateName
modelAsString: true
enum:
- Alabama
- Alaska
- American Samoa
- Arizona
- Arkansas
- California
- Colorado
- Connecticut
- Delaware
- District of Columbia
- Federated States of Micronesia
- Florida
- Georgia
- Guam
- Hawaii
- Idaho
- Illinois
- Indiana
- Iowa
- Kansas
- Kentucky
- Louisiana
- Maine
- Marshall Islands
- Maryland
- Massachusetts
- Michigan
- Minnesota
- Mississippi
- Missouri
- Montana
- Nebraska
- Nevada
- New Hampshire
- New Jersey
- New Mexico
- New York
- North Carolina
- North Dakota
- Northern Mariana Islands
- Ohio
- Oklahoma
- Oregon
- Palau
- Pennsylvania
- Puerto Rico
- Rhode Island
- South Carolina
- South Dakota
- Tennessee
- Texas
- Utah
- Vermont
- Virgin Islands
- Virginia
- Washington
- West Virginia
- Wisconsin
- Wyoming
TerminationReason:
description: >-
Termination Reason list values, as defined in Employee Fields Settings
and Lists in the Metadata API.
type: string
TerminationType:
type: string
enum:
- Death
- Involuntary
- Voluntary
TimeTrackingRateType:
type: string
enum:
- REG
- OT
x-enum-descriptions:
- Regular
- Overtime
x-enum-varnames:
- Regular
- Overtime
RgbColor:
description: >-
String representation of a 24-bit RGB (aka true color) color value.
type: string
pattern: '^[0-9a-f]{6}$'
MonthDay:
description: String representation of a 2-digit month and 2-digit day.
type: string
pattern: '^[01][0-9]-[0-3][0-9]$'
# Not currently used, since tableName parameter was removed in favor of
# treating each table path as a separate operation, since it returns a
# different schema.
#
# EmployeeCustomTableName:
# type: string
# pattern: '^custom.*'
#
# EmployeeStandardTableName:
# type: string
# enum:
# - contacts
# - compensation
# - dependents
# - emergencyContacts
# - employmentStatus
# - jobInfo
# x-enum-descriptions:
# - Emergency Contacts Table
# - Compensation Table
# - Dependents Table
# - Emergency Contacts Table
# - Employment Status Table
# - Job Info Table
#
# EmployeeTableName:
# anyOf:
# - $ref: '#/components/schemas/EmployeeCustomTableName'
# - $ref: '#/components/schemas/EmployeeStandardTableName'
Field:
type: object
properties:
id:
$ref: '#/components/schemas/EmployeeFieldName'
type:
type: string
name:
type: string
Employee:
type: object
properties:
address1:
description: The employee's first address line.
type: [string, 'null']
address2:
description: The employee's second address line.
type: [string, 'null']
age:
description: >-
The employee's age. To change age, update dateOfBirth field.
Has value -1 when dateOfBirth is unspecified.
readOnly: true
type: integer
minimum: -1
bestEmail:
description: The employee's work email if set, otherwise their home email.
readOnly: true
type: [string, 'null']
format: email
birthday:
description: >-
The employee's month and day of birth. To change birthday, update
dateOfBirth field.
Is empty string if dateOfBirth is unspecified.
readOnly: true
# FIXME: Should be anyOf: [MonthDay, EmptyString]
allOf:
- $ref: '#/components/schemas/MonthDay'
city:
description: The employee's city.
type: [string, 'null']
country:
description: The employee's country.
anyOf:
- $ref: '#/components/schemas/Country'
- type: 'null'
dateOfBirth:
description: The date the employee was born.
type: [string, 'null']
format: date
department:
description: The employee's CURRENT department.
anyOf:
- $ref: '#/components/schemas/Department'
- type: 'null'
division:
description: The employee's CURRENT division.
anyOf:
- $ref: '#/components/schemas/Division'
- type: 'null'
eeo:
description: The employee's EEO job category
anyOf:
- $ref: '#/components/schemas/EEOJobCategory'
- type: 'null'
employeeNumber:
description: Employee number (assigned by your company).
type: [string, 'null']
employmentHistoryStatus:
description: The employee's CURRENT employment status. Options are customized by account. Read-only starting with version 1.1; update using the employmentStatus table.
readOnly: true
anyOf:
- $ref: '#/components/schemas/EmploymentStatus'
- type: 'null'
ethnicity:
description: The employee's ethnicity.
anyOf:
- $ref: '#/components/schemas/Ethnicity'
- type: 'null'
exempt:
description: The employee's FLSA Overtime Status
anyOf:
- $ref: '#/components/schemas/OvertimeExemptStatus'
- type: 'null'
firstName:
description: The employee's first name.
type: [string, 'null']
minLength: 1
flsaCode:
description: The employee's FLSA Overtime Status
deprecated: true
x-deprecated:
replaced-by: exempt
anyOf:
- $ref: '#/components/schemas/OvertimeExemptStatus'
- type: 'null'
fullName1:
description: The employee's first and last name. (e.g., John Doe).
readOnly: true
type: string
minLength: 1
fullName2:
description: The employee's last and first name. (e.g., Doe, John).
readOnly: true
type: string
minLength: 1
fullName3:
description: The employee's full name and their preferred name. (e.g., Doe, John Quentin (JDog)).
readOnly: true
type: string
minLength: 1
fullName4:
description: The employee's full name without their preferred name, last name first. (e.g., Doe, John Quentin).
readOnly: true
type: string
minLength: 1
fullName5:
description: The employee's full name without their preferred name, first name first. (e.g., John Quentin Doe).
readOnly: true
type: string
minLength: 1
displayName:
description: The employee's name displayed in a format configured by the user.
readOnly: true
type: string
minLength: 1
gender:
description: The employee's gender.
anyOf:
- $ref: '#/components/schemas/Gender'
- type: 'null'
hireDate:
description: The date the employee was hired.
type: string
format: date
originalHireDate:
description: >-
The date the employee was originally hired.
Available starting with version 1.1.
Note: Attempting to update to "0000-00-00" has no effect.
Use "" or null to clear.
type: string
format: date
homeEmail:
description: The employee's home email address.
type: [string, 'null']
format: email
homePhone:
description: The employee's home phone number.
type: [string, 'null']
id:
description: The employee ID automatically assigned by BambooHR.
readOnly: true
type: integer
minimum: 1
jobTitle:
description: The CURRENT value of the employee's job title, updating this field will create a new row in position history.
anyOf:
- $ref: '#/components/schemas/JobTitle'
- type: 'null'
lastChanged:
description: The date and time that the employee record was last changed.
readOnly: true
type: string
format: date-time
lastName:
description: The employee's last name.
type: string
minLength: 1
location:
description: The employee's CURRENT location.
anyOf:
- $ref: '#/components/schemas/Location'
- type: 'null'
maritalStatus:
description: The employee's marital status
anyOf:
- $ref: '#/components/schemas/MaritalStatus'
- type: 'null'
middleName:
description: The employee's middle name.
type: [string, 'null']
mobilePhone:
description: The employee's mobile phone number.
type: [string, 'null']
payChangeReason:
description: The reason for the employee's last pay rate change.
anyOf:
- $ref: '#/components/schemas/CompensationChangeReason'
- type: 'null'
payGroup:
description: The custom pay group that the employee belongs to.
anyOf:
- $ref: '#/components/schemas/PayGroup'
- type: 'null'
payGroupId:
description: The ID value corresponding to the pay group that an employee belongs to.
type: [integer, 'null']
minimum: 1
payRate:
description: The employee's CURRENT pay rate
anyOf:
- $ref: '#/components/schemas/CurrencyAmountString'
- type: 'null'
payRateEffectiveDate:
description: The day the most recent change was made.
readOnly: true
type: [string, 'null']
format: date
payType:
description: The employee's CURRENT pay type.
anyOf:
- $ref: '#/components/schemas/PayType'
- type: 'null'
payPer:
description: The employee's CURRENT pay per.
anyOf:
- $ref: '#/components/schemas/PayPer'
- type: 'null'
paidPer:
description: The employee's CURRENT pay per.
deprecated: true
x-deprecated:
replaced-by: payPer
anyOf:
- $ref: '#/components/schemas/PayPer'
- type: 'null'
paySchedule:
description: The employee's CURRENT pay schedule.
anyOf:
- $ref: '#/components/schemas/PaySchedule'
- type: 'null'
payScheduleId:
description: The ID value corresponding to the pay schedule that an employee belongs to.
type: [integer, 'null']
minimum: 1
payFrequency:
description: The employee's CURRENT pay frequency.
anyOf:
- $ref: '#/components/schemas/PayFrequency'
- type: 'null'
includeInPayroll:
description: Should employee be included in payroll
type: boolean
timeTrackingEnabled:
description: Should time tracking be enabled for the employee
type: boolean
preferredName:
description: The employee's preferred name.
type: [string, 'null']
ssn:
description: The employee's Social Security number.
anyOf:
- $ref: '#/components/schemas/SocialSecurityNumber'
- type: 'null'
sin:
description: The employee's Canadian Social Insurance Number.
anyOf:
- $ref: '#/components/schemas/SocialInsuranceNumber'
- type: 'null'
state:
description: >-
In responses from getEmployee: The employee's state code (if USA),
province (if Canada), or state/province name.
In responses from getReport and getCustomReport: The employee's
state/province name.
# TODO: Uncomment once OpenAPI Generator or Autorest support anyOf
# https://github.com/OpenAPITools/openapi-generator/issues/15
# anyOf:
# - $ref: '#/components/schemas/StateCode'
# - $ref: '#/components/schemas/StateName'
# - $ref: '#/components/schemas/ProvinceCode'
# - type: string
type: string
stateCode:
description: The 2 character abbreviation for the employee's state (US only).
readOnly: true
anyOf:
- $ref: '#/components/schemas/StateCode'
- type: 'null'
status:
description: The employee's employee status.
allOf:
- $ref: '#/components/schemas/EmployeeStatus'
supervisor:
description: The employee’s CURRENT supervisor as last name-comma-first name-space-middle name.
readOnly: true
type: [string, 'null']
supervisorId:
description: The 'employeeNumber' of the employee's CURRENT supervisor.
readOnly: true
type: [string, 'null']
supervisorEId:
description: The ID of the employee's CURRENT supervisor.
readOnly: true
type: [integer, 'null']
minimum: 1
terminationDate:
description: The date the employee was terminated. Read-only starting with version 1.1; update using the employmentStatus table.
readOnly: true
type: string
format: date
workEmail:
description: The employee's work email address.
type: [string, 'null']
format: email
workPhone:
description: The employee's work phone number, without extension.
type: [string, 'null']
workPhonePlusExtension:
description: The employee's work phone and extension.
readOnly: true
type: [string, 'null']
workPhoneExtension:
description: The employee's work phone extension (if any).
type: [string, 'null']
zipcode:
description: The employee's ZIP code.
type: [string, 'null']
isPhotoUploaded:
description: Whether a photo has been uploaded for the employee.
readOnly: true
type: boolean
acaStatus:
description: The employee's ACA (Affordable Care Act) Full-Time status.
deprecated: true
x-deprecated:
description: >-
Use acaStatusCategory instead.
See https://documentation.bamboohr.com/docs/planned-changes-to-the-api#section-20191001-acastatus-field-deprecation
replaced-by: acaStatusCategory
anyOf:
- $ref: '#/components/schemas/YesNoNonAssessment'
- type: 'null'
acaStatusCategory:
description: The employee's ACA (Affordable Care Act) status.
readOnly: true
anyOf:
- $ref: '#/components/schemas/AcaStatusCategory'
- type: 'null'
standardHoursPerWeek:
description: The number of hours the employee works in a standard week.
type: integer
minimum: 0
bonusDate:
description: The date of the last bonus.
type: [string, 'null']
format: date
bonusAmount:
description: The amount of the most recent bonus
allOf:
- $ref: '#/components/schemas/CurrencyAmountString'
bonusReason:
description: The reason for the most recent bonus.
type: [string, 'null']
bonusComment:
description: Comment about the most recent bonus.
type: [string, 'null']
commissionDate:
description: The date of the last commission.
type: string
format: date
commisionDate:
description: This field name contains a typo, and exists for backwards compatibility.
deprecated: true
x-deprecated:
replaced-by: commissionDate
type: string
format: date
commissionAmount:
description: The amount of the most recent commission.
allOf:
- $ref: '#/components/schemas/CurrencyAmountString'
commissionComment:
description: Comment about the most recent commission.
type: string
employmentStatus:
description: The employee's employee status.
deprecated: true
x-deprecated:
replaced-by: status
allOf:
- $ref: '#/components/schemas/EmployeeStatus'
nickname:
description: The employee's preferred name.
type: [string, 'null']
deprecated: true
x-deprecated:
replaced-by: preferredName
payPeriod:
description: The employee's CURRENT pay period.
deprecated: true
x-deprecated:
description: Use paySchedule or payFrequency instead.
replaced-by: paySchedule
allOf:
- $ref: '#/components/schemas/PayFrequency'
canUploadPhoto:
description: >-
The employee is permitted to upload a photo.
This field is only included in getDirectory responses.
readOnly: true
type: boolean
photoUploaded:
description: The employee has uploaded a photo.
readOnly: true
type: boolean
deprecated: true
x-deprecated:
replaced-by: isPhotoUploaded
photoUrl:
description: >-
Employee photo url, or a placeholder photo URL when photoUploaded
is false.
type: string
format: url
nin:
description: The employee's NIN number
type: string
nationalId:
description: The employee's National ID number
type: string
nationality:
description: The employee's nationality
type: string
facebook:
description: The employee's Facebook username or URL
type: [string, 'null']
linkedIn:
description: The employee's LinkedIn URL
type: [string, 'null']
format: url
skypeUsername:
description: The employee's Skype username
type: string
twitterFeed:
description: The employee's Twitter username or URL
type: [string, 'null']
patternProperties:
'^customField':
type: string
# Note: Only id is required due to how employeeFields parameter works
required:
- id
EmployeeDirectory:
type: object
properties:
fields:
type: array
items:
$ref: '#/components/schemas/Field'
employees:
type: array
items:
$ref: '#/components/schemas/Employee'
required:
- fields
- employees
ReportFilters:
type: object
properties:
lastChanged:
type: object
properties:
includeNull:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/YesNo'
value:
type: string
format: date-time
CustomReportRequest:
type: object
properties:
title:
type: string
filters:
$ref: '#/components/schemas/ReportFilters'
fields:
description: >-
Employee fields to include in the custom report.
Note: If fields is empty or not specified, only one employee is
returned. To avoid this unexpected behavior, it is specified
here as required with minLength: 1
type: array
minLength: 1
items:
$ref: '#/components/schemas/EmployeeFieldName'
required:
- fields
EmployeeReport:
allOf:
- $ref: '#/components/schemas/EmployeeDirectory'
- type: object
properties:
title:
type: string
required:
- title
ReportFormat:
type: string
enum:
- CSV
- JSON
- PDF
- XLS
- XML
File:
xml:
name: file
type: object
properties:
id:
xml:
attribute: true
readOnly: true
type: integer
minimum: 1
name:
description: File name
type: string
originalFileName:
type: string
size:
description: Size of the file content, in bytes.
type: integer
minimum: 0
dateCreated:
type: string
format: date-time
createdBy:
description: Full name of the user who uploaded the file.
type: string
shareWithEmployee:
$ref: '#/components/schemas/YesNo'
FileCategory:
xml:
name: category
type: object
properties:
id:
xml:
attribute: true
readOnly: true
type: integer
minimum: 1
name:
type: string
required:
- id
- name
EmployeeFile:
allOf:
- $ref: '#/components/schemas/File'
- type: object
properties:
canRenameFile:
$ref: '#/components/schemas/YesNo'
canDeleteFile:
$ref: '#/components/schemas/YesNo'
canChangeShareWithEmployeeFieldValue:
$ref: '#/components/schemas/YesNo'
EmployeeFileCategory:
allOf:
- $ref: '#/components/schemas/FileCategory'
- type: object
properties:
canRenameCategory:
$ref: '#/components/schemas/YesNo'
canDeleteCategory:
$ref: '#/components/schemas/YesNo'
canUploadFiles:
$ref: '#/components/schemas/YesNo'
displayIfEmpty:
$ref: '#/components/schemas/YesNo'
files:
type: array
items:
$ref: '#/components/schemas/EmployeeFile'
required:
- canRenameCategory
- canDeleteCategory
- canUploadFiles
- displayIfEmpty
- files
EmployeeFiles:
type: object
properties:
employee:
$ref: '#/components/schemas/Employee'
categories:
type: array
items:
$ref: '#/components/schemas/EmployeeFileCategory'
required:
- employee
- categories
CompanyFileCategory:
allOf:
- $ref: '#/components/schemas/FileCategory'
- type: object
properties:
files:
type: array
items:
$ref: '#/components/schemas/File'
required:
- files
CompanyFiles:
xml:
name: files
type: array
items:
$ref: '#/components/schemas/CompanyFileCategory'
UpdateFileRequest:
xml:
name: file
type: object
properties:
name:
type: string
categoryId:
type: integer
minimum: 1
shareWithEmployee:
$ref: '#/components/schemas/YesNo'
AddCompanyFileCategoryRequest:
xml:
name: files
wrapped: true
type: array
items:
xml:
name: category
type: string
AddEmployeeFileCategoryRequest:
xml:
name: employee
wrapped: true
type: array
items:
xml:
name: category
type: string
UploadFileRequest:
type: object
properties:
category:
description: Category ID in which to place the uploaded file.
type: integer
minimum: 1
fileName:
type: string
share:
$ref: '#/components/schemas/YesNo'
file:
description: Content of file to upload.
type: string
format: binary
required:
- category
- fileName
- file
UploadPhotoRequest:
type: object
properties:
file:
description: >-
Photo to upload.
- The width and height of the photo must be the same number of pixels.
- The source photo must be a JPEG, GIF, or PNG.
- The photo file may not be larger than 20MB.
type: string
format: binary
required:
- file
CompensationChange:
type: object
properties:
id:
type: string
format: integer
readOnly: true
employeeId:
type: string
format: integer
readOnly: true
startDate:
type: string
format: date
rate:
$ref: '#/components/schemas/CurrencyAmount'
type:
$ref: '#/components/schemas/PayType'
exempt:
$ref: '#/components/schemas/OvertimeExemptStatus'
reason:
$ref: '#/components/schemas/CompensationChangeReason'
comment:
type: string
paidPer:
$ref: '#/components/schemas/PayPer'
paySchedule:
$ref: '#/components/schemas/PaySchedule'
overtimeRate:
$ref: '#/components/schemas/CurrencyAmount'
required:
- id
- employeeId
# Other fields are required in responses, but not in request bodies
# https://github.com/OAI/OpenAPI-Specification/issues/1873
Dependent:
type: object
properties:
id:
type: string
format: integer
readOnly: true
employeeId:
type: string
format: integer
readOnly: true
firstName:
type: [string, 'null']
middleName:
type: [string, 'null']
lastName:
type: [string, 'null']
relationship:
anyOf:
- $ref: '#/components/schemas/DependentRelationship'
- type: 'null'
gender:
anyOf:
- $ref: '#/components/schemas/Gender'
- type: 'null'
addressLine1:
type: [string, 'null']
addressLine2:
type: [string, 'null']
ssn:
anyOf:
- $ref: '#/components/schemas/SocialSecurityNumber'
- type: 'null'
sin:
anyOf:
- $ref: '#/components/schemas/SocialInsuranceNumber'
- type: 'null'
dateOfBirth:
type: [string, 'null']
format: date
city:
type: [string, 'null']
state:
description: >-
State code, province code, or province name (if code unavailable)
of dependent's address
# TODO: Uncomment once OpenAPI Generator or Autorest support anyOf
# https://github.com/OpenAPITools/openapi-generator/issues/15
# anyOf:
# - $ref: '#/components/schemas/StateCode'
# - $ref: '#/components/schemas/ProvinceCode'
# - type: string
type: [string, 'null']
homePhone:
type: [string, 'null']
country:
anyOf:
- $ref: '#/components/schemas/Country'
- type: 'null'
zipcode:
type: [string, 'null']
DriversLicense:
type: object
properties:
id:
type: string
format: integer
readOnly: true
employeeId:
type: string
format: integer
readOnly: true
customLicenseNumber1:
x-ms-client-name: licenseNumber
type: [string, 'null']
customStateIssued1:
x-ms-client-name: stateIssued
anyOf:
- $ref: '#/components/schemas/StateCode'
- type: 'null'
customExpirationDate2:
x-ms-client-name: expirationDate
type: [string, 'null']
format: date
customLicenseComments1:
x-ms-client-name: comment
type: [string, 'null']
required:
- id
- employeeId
# Other fields are required in responses, but not in request bodies
# https://github.com/OAI/OpenAPI-Specification/issues/1873
EmergencyContact:
type: object
properties:
id:
type: string
format: integer
readOnly: true
employeeId:
type: string
format: integer
readOnly: true
name:
type: string
relationship:
anyOf:
- $ref: '#/components/schemas/EmergencyContactRelationship'
- type: 'null'
homePhone:
type: [string, 'null']
addressLine1:
type: [string, 'null']
addressLine2:
type: [string, 'null']
mobilePhone:
type: [string, 'null']
email:
type: [string, 'null']
format: email
zipcode:
type: [string, 'null']
city:
type: [string, 'null']
state:
description: >-
State code, province code, or province name (if code unavailable)
of emergency contact's address
# TODO: Uncomment once OpenAPI Generator or Autorest support anyOf
# https://github.com/OpenAPITools/openapi-generator/issues/15
# anyOf:
# - $ref: '#/components/schemas/StateCode'
# - $ref: '#/components/schemas/ProvinceCode'
# - type: [string, 'null']
type: [string, 'null']
country:
anyOf:
- $ref: '#/components/schemas/Country'
- type: 'null'
workPhone:
type: [string, 'null']
workPhoneExtension:
type: [string, 'null']
required:
- id
- employeeId
# Other fields are required in responses, but not in request bodies
# https://github.com/OAI/OpenAPI-Specification/issues/1873
EmploymentStatusChange:
type: object
properties:
id:
type: string
format: integer
readOnly: true
employeeId:
type: string
format: integer
readOnly: true
date:
type: string
format: date
employmentStatus:
$ref: '#/components/schemas/EmploymentStatus'
comment:
type: [string, 'null']
terminationReasonId:
# anyOf:
# - '#/components/schemas/EmptyString'
$ref: '#/components/schemas/TerminationReason'
terminationTypeId:
# anyOf:
# - '#/components/schemas/EmptyString'
$ref: '#/components/schemas/TerminationType'
terminationRehireId:
# anyOf:
# - '#/components/schemas/EmptyString'
$ref: '#/components/schemas/YesNo'
benetracStatus:
type: [string, 'null']
gusto:
type: [string, 'null']
required:
- id
- employeeId
# Other fields are required in responses, but not in request bodies
# https://github.com/OAI/OpenAPI-Specification/issues/1873
JobInfo:
type: object
properties:
id:
type: string
format: integer
readOnly: true
employeeId:
type: string
format: integer
readOnly: true
date:
description: >-
Date on which the employee began working this job.
Note: Invalid date values in requests are ignored.
type: [string, 'null']
format: date
location:
description: >-
Location where the employee worked for this job.
Responses contain an empty string, if no other value is specified.
Note: Values which do not match a `name` from the "Location" list
(case insensitively, ignoring trailing spaces) are ignored.
allOf:
- $ref: '#/components/schemas/Location'
division:
description: >-
Division in which the employee worked for this job.
Responses contain an empty string, if no other value is specified.
Note: Values which do not match a `name` from the "Division" list
(case insensitively, ignoring trailing spaces) are ignored.
allOf:
- $ref: '#/components/schemas/Division'
department:
description: >-
Department in which the employee worked for this job.
Responses contain an empty string, if no other value is specified.
Note: Values which do not match a `name` from the "Department" list
(case insensitively, ignoring trailing spaces) are ignored.
allOf:
- $ref: '#/components/schemas/Department'
jobTitle:
description: >-
Job title for the employee during this job.
Responses contain an empty string, if no other value is specified.
Note: Values which do not match a `name` from the "Job Title" list
(case insensitively, ignoring trailing spaces) are ignored.
allOf:
- $ref: '#/components/schemas/JobTitle'
reportsTo:
description: >-
Name of the employee's supervisor for this job.
Responses use value from `fullName1` employee field, or an empty
string if not specified.
Note: Values which do not match `fullName1`, `fullName2`,
`fullName4`, or `fullName5` for a current employee (case
insensitively, ignoring trailing spaces) are ignored.
type: string
required:
- id
- employeeId
# Other fields are required in responses, but not in request bodies
# https://github.com/OAI/OpenAPI-Specification/issues/1873
TimeOffPolicyType:
type: string
enum:
- accruing
- discretionary
- manual
x-enum-descriptions:
- Available time-off is automatically accrued at a defined rate.
- Available time-off is at the discretion of the employee (i.e. unlimited)
- Available time-off is manually adjusted.
TimeOffRequestAction:
type: string
enum:
- approve
- view
TimeOffUnit:
type: string
enum:
- days
- hours
TimeOffActions:
type: object
properties:
view:
type: boolean
edit:
type: boolean
cancel:
type: boolean
approve:
type: boolean
deny:
type: boolean
bypass:
type: boolean
required:
- view
- edit
- cancel
- approve
- deny
- bypass
TimeOffAmount:
xml:
name: amount
type: object
properties:
unit:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/TimeOffUnit'
amount:
type: string
format: decimal
required:
- unit
- amount
TimeOffIcon:
type: string
enum:
- airplane
- baby-carriage
- band-aid
- birthday-cake
- camping-trailer
- family
- first-aid-kit
- gavel
- graduation
- happy-calendar
- home
- joining-hands
- medal
- palm-trees
- selfie
- teddy-bear
- time-off-calendar
- time-off-luggage
TimeOffRequestNoteSource:
type: string
enum:
- employee
- manager
TimeOffRequestNote:
description: A note made on a time off request.
type: object
properties:
from:
$ref: '#/components/schemas/TimeOffRequestNoteSource'
note:
type: string
required:
- from
- note
TimeOffRequestNotes:
description: >-
Earliest note made on a time off request by the employee and manager.
If either has made multiple notes, only the first is returned.
type: object
properties:
employee:
type: string
manager:
type: string
TimeOffTypeId:
description: >-
Time off type identifier defined in the Metadata API
https://www.bamboohr.com/api/documentation/metadata.php#timeOffTypes
and visible in Settings > Time Off in the web UI.
type: string
format: integer
TimeOffTypeInfo:
xml:
name: type
type: object
properties:
id:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/TimeOffTypeId'
name:
type: string
icon:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/TimeOffIcon'
required:
- id
- name
- icon
TimeOffTypeInfoDetailed:
allOf:
- $ref: '#/components/schemas/TimeOffTypeInfo'
- xml:
name: timeOffType
type: object
properties:
units:
$ref: '#/components/schemas/TimeOffUnit'
color:
$ref: '#/components/schemas/RgbColor'
required:
- units
- color
TimeOffTypes:
xml:
name: timeOffTypes
type: object
properties:
timeOffTypes:
type: array
items:
$ref: '#/components/schemas/TimeOffTypeInfoDetailed'
defaultHours:
type: array
items:
$ref: '#/components/schemas/TableMetadata'
TimeOffTypesMode:
type: string
enum:
- request
TimeOffPolicy:
xml:
name: timeOffPolicy
type: object
properties:
id:
xml:
attribute: true
type: integer
minimum: 1
timeOffTypeId:
$ref: '#/components/schemas/TimeOffTypeId'
name:
type: string
effectiveDate:
type: [string, 'null']
format: date
type:
$ref: '#/components/schemas/TimeOffPolicyType'
required:
- id
- timeOffTypeId
- name
- effectiveDate
- type
TimeOffPolicies:
xml:
name: timeOffPolicies
wrapped: true
type: array
items:
$ref: '#/components/schemas/TimeOffPolicy'
AddTimeOffRequestStatus:
type: string
enum:
- approved
- declined
- denied
- requested
TimeOffRequestStatus:
type: string
enum:
- approved
- canceled
- declined
- denied
- requested
- superceded
TimeOffRequestStatusLastChanged:
xml:
name: status
type: object
properties:
lastChanged:
xml:
attribute: true
type: string
format: date
lastChangedByUserId:
xml:
attribute: true
type: string
format: integer
status:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/TimeOffRequestStatus'
required:
- lastChanged
- lastChangedByUserId
- status
TimeOffRequest:
xml:
name: request
type: object
properties:
id:
type: string
format: integer
employeeId:
type: string
format: integer
status:
$ref: '#/components/schemas/TimeOffRequestStatusLastChanged'
name:
type: string
start:
type: string
format: date
end:
type: string
format: date
created:
type: string
format: date
type:
$ref: '#/components/schemas/TimeOffTypeInfo'
amount:
$ref: '#/components/schemas/TimeOffAmount'
actions:
$ref: '#/components/schemas/TimeOffActions'
dates:
description: >-
Maps ISO date string to number of time-off hours requested.
type: object
patternProperties:
'^[0-9]{4}-[0-2]{2}-[0-2]{2}$':
type: string
format: integer
notes:
description: >-
Earliest note made on a time off request by the employee and manager.
If either has made multiple notes, only the first is returned.
If neither have made notes, an empty array is returned.
# Note: Neither OpenAPI Generator nor Autorest support anyOf
# https://github.com/OpenAPITools/openapi-generator/issues/15
# Must be replaced before generation
anyOf:
- $ref: '#/components/schemas/TimeOffRequestNotes'
- type: array
maxItems: 0
# Note: Can be any type, since always empty.
# Use unconstrained type to avoid implying data should be handled
items: {}
required:
- id
- employeeId
- status
- name
- start
- end
- created
- type
- amount
- notes
TimeOffRequests:
xml:
name: requests
wrapped: true
type: array
items:
$ref: '#/components/schemas/TimeOffRequest'
AddTimeOffRequestBody:
xml:
name: request
type: object
properties:
status:
$ref: '#/components/schemas/AddTimeOffRequestStatus'
start:
description: >-
Although dates in the past are accepted, the request will not
appear in the "Upcoming Time Off" section of the "Time Off" tab and
therefore may be difficult to approve.
type: string
format: date
end:
type: string
format: date
timeOffTypeId:
$ref: '#/components/schemas/TimeOffTypeId'
amount:
description: >-
The number of days/hours to update the employee's balance by.
The unit will be whatever the time off type is configured for.
The number may be positive, negative, or zero. (Note: This author
does not know in what cases negative values might be requested.)
type: number
format: decimal
default: 0
notes:
description: >-
Notes/Comments from the employee and/or manager about this request.
If multiple notes from the same source are included, all but the
last are currently ignored.
type: array
items:
$ref: '#/components/schemas/TimeOffRequestNote'
dates:
description: >-
The section is optional. If you don't provide it
then all of the time off for the request will be deducted on the
first day of the request.
If you do provide details for the dates, then the amount
for the overall request is ignored and the total amount of
time requested is simply the sum of the amounts for each day.
Keys are ISO date strings, values are number of hours requested.
type: object
patternProperties:
'^[0-9]{4}-[0-2]{2}-[0-2]{2}$':
type: string
format: integer
previousRequest:
description: >-
If you supply the "previousRequest" parameter with a valid "time
off request ID" then the original request will be canceled and the
new request will be marked as its successor. This allows you to
change a request that has already been approved. A request can be
changed any time before the start date of the time off. The new
request must list the same employee ID as the original request.
type: integer
minimum: 1
required:
- timeOffTypeId
- start
- end
- status
UpdateTimeOffRequestStatusRequest:
xml:
name: request
type: object
properties:
status:
$ref: '#/components/schemas/TimeOffRequestStatus'
note:
type: string
required:
- status
# Note: Should be abstract, since request must be a subtype:
# https://github.com/OpenAPITools/openapi-generator/issues/3962
# https://github.com/Azure/autorest/issues/995
AddTimeOffHistoryRequest:
description: >-
Base type for `addHistoryItem` request body.
**Do not use this class directly. Use a subclass.**
xml:
name: history
type: object
discriminator:
propertyName: eventType
mapping:
used: AddTimeOffHistoryItemRequest
override: AddTimeOffHistoryOverrideRequest
properties:
date:
description: >-
By convention, the date of the history item should be the first
date of the time off range.
type: string
format: date
eventType:
type: string
note:
description: Note attached to the history item.
type: string
required:
- date
- eventType
AddTimeOffHistoryItemRequest:
allOf:
- $ref: '#/components/schemas/AddTimeOffHistoryRequest'
- type: object
properties:
timeOffRequestId:
description: Time off request this history item is linked to.
type: integer
minimum: 1
required:
- timeOffRequestId
AddTimeOffHistoryOverrideRequest:
allOf:
- $ref: '#/components/schemas/AddTimeOffHistoryRequest'
- type: object
properties:
timeOffTypeId:
$ref: '#/components/schemas/TimeOffTypeId'
amount:
description: |-
The number of days/hours of requested time off.
The unit will be whatever the time off type is configured for.
May be positive (to accrue), negative (to use), or zero.
Is not limited to 24 hours, unlike `AdjustTimeOffBalanceRequest`.
type: number
format: decimal
AdjustTimeOffBalanceRequest:
type: object
properties:
date:
description: The date the adjustment should be added in history.
type: string
format: date
timeOffTypeId:
description: The ID of the time off type to add a balance adjustment for.
allOf:
- $ref: '#/components/schemas/TimeOffTypeId'
amount:
description: >-
The number of hours by which to adjust the balance.
Although adjustments are limited to +/-24, the sum of adjustment
amounts on the same day is not limited.
type: number
format: decimal
minimum: -24
maximum: 24
# Values which are not multiples of 0.01 will be rounded.
# Disallow by schema to avoid silent unintended behavior.
multipleOf: 0.01
note:
description: This is an optional note to show in history.
type: string
maxLength: 255
required:
- date
- timeOffTypeId
- amount
EmployeeTimeOffPolicy:
type: object
properties:
timeOffPolicyId:
type: integer
minimum: 1
timeOffTypeId:
$ref: '#/components/schemas/TimeOffTypeId'
accrualStartDate:
description: >-
Date on which this policy starts.
null removes the assignment, except for the "BambooHR Unlimited
Policy" type (shown as "None" in the UI), which is the default.
Must be _after_ employee `hireDate` or 400 "There is already a
policy assigned for that time off type" will be returned.
type: [string, 'null']
format: date
required:
- timeOffPolicyId
- timeOffTypeId
- accrualStartDate
TimeOffEstimate:
xml:
name: estimate
type: object
properties:
timeOffType:
xml:
attribute: true
type: string
format: integer
name:
xml:
attribute: true
type: string
units:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/TimeOffUnit'
balance:
xml:
attribute: true
type: string
format: decimal
# Note: example in docs is -2.5 so negative is allowed
policyType:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/TimeOffPolicyType'
usedYearToDate:
xml:
attribute: true
type: string
format: decimal
end:
xml:
attribute: true
type: string
format: date
required:
- timeOffType
- name
- units
- balance
- policyType
- usedYearToDate
- end
TimeOffEstimates:
xml:
name: estimates
wrapped: true
type: array
items:
$ref: '#/components/schemas/TimeOffEstimate'
WhoIsOutType:
type: string
enum:
- holiday
- timeOff
WhoIsOutEntry:
xml:
name: item
type: object
properties:
id:
description: Time off request ID
type: integer
minimum: 1
type:
$ref: '#/components/schemas/WhoIsOutType'
employeeId:
type: integer
minimum: 1
name:
description: >-
Holiday name if type is "holiday".
Employee name if type is "timeOff".
type: string
start:
type: string
format: date
end:
type: string
format: date
required:
- id
- type
- employeeId
- name
- start
- end
WhoIsOutCalendar:
xml:
name: calendar
wrapped: true
type: array
items:
$ref: '#/components/schemas/WhoIsOutEntry'
FieldMetadata:
xml:
name: field
type: object
properties:
id:
xml:
attribute: true
# FIXME: API returns a mix of string and integer in same response.
# TODO: Uncomment once OpenAPI Generator or Autorest support anyOf
# https://github.com/OpenAPITools/openapi-generator/issues/15
# anyOf:
# - type: integer
# minimum: 1
# - type: string
# format: decimal
type: string
format: decimal
name:
type: string
type:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/EmployeeFieldType'
alias:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/EmployeeFieldName'
required:
- id
- name
- type
FieldsMetadata:
xml:
name: fields
wrapped: true
type: array
items:
$ref: '#/components/schemas/FieldMetadata'
ListOption:
xml:
name: option
type: object
properties:
id:
type: integer
minimum: 1
archived:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/YesNo'
createdDate:
type: string
format: date-time
archivedDate:
type: [string, 'null']
format: date-time
name:
type: string
required:
- id
- archived
- createdDate
- archivedDate
- name
ListOptions:
xml:
name: options
wrapped: true
type: array
items:
$ref: '#/components/schemas/ListOption'
ListOptionUpdate:
xml:
name: options
type: object
properties:
id:
xml:
attribute: true
type: integer
minimum: 1
archived:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/YesNo'
value:
type: string
required:
- value
ListOptionsUpdate:
xml:
name: options
type: object
properties:
options:
type: array
items:
$ref: '#/components/schemas/ListOptionUpdate'
required:
- options
ListMetadata:
xml:
name: list
type: object
properties:
fieldId:
xml:
attribute: true
type: integer
minimum: 1
manageable:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/YesNo'
multiple:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/YesNo'
name:
type: string
options:
$ref: '#/components/schemas/ListOptions'
alias:
xml:
attribute: true
allOf:
- $ref: '#/components/schemas/EmployeeFieldName'
required:
- fieldId
- manageable
- multiple
- name
- options
ListsMetadata:
xml:
name: lists
wrapped: true
type: array
items:
$ref: '#/components/schemas/ListMetadata'
TableAlias:
type: string
enum:
- benefit_class
- bonus
- commission
- compensation
- contacts
- dependents
- earnings
- emergencyContacts
- employeeEducation
- employeePassports
- employeeVisas
- employmentStatus
- jobInfo
TableMetadata:
xml:
name: table
type: object
properties:
alias:
$ref: '#/components/schemas/TableAlias'
fields:
type: array
items:
$ref: '#/components/schemas/FieldMetadata'
required:
- alias
- fields
TablesMetadata:
xml:
name: tables
wrapped: true
type: array
items:
$ref: '#/components/schemas/TableMetadata'
UserStatus:
type: string
enum:
- enabled
User:
xml:
name: user
type: object
properties:
id:
type: integer
minimum: 1
employeeId:
description: 0 if user is not linked to an employee
type: integer
minimum: 0
firstName:
type: string
lastName:
type: string
email:
type: string
format: email
status:
$ref: '#/components/schemas/UserStatus'
lastLogin:
type: string
format: date-time
required:
- id
- employeeId
- firstName
- lastName
- email
- status
Users:
description: Map from user ID to user.
xml:
name: users
type: object
patternProperties:
'^[0-9]+$':
$ref: '#/components/schemas/User'
EmployeeChange:
xml:
name: employee
type: object
properties:
id:
type: string
format: integer
action:
$ref: '#/components/schemas/ChangeType'
lastChanged:
type: string
format: date-time
required:
- id
- action
- lastChanged
ChangeList:
xml:
name: changeList
type: object
properties:
latest:
type: string
format: date-time
employees:
description: >-
Map from employee ID to change information for the employee.
type: object
patternProperties:
'^[0-9]+$':
$ref: '#/components/schemas/EmployeeChange'
required:
- latest
- employees
LoginRequest:
type: object
properties:
user:
description: The user's email address.
type: string
format: email
password:
description: The user's password.
type: string
format: password
applicationKey:
description: The application key provided to you by BambooHR.
type: string
deviceId:
description: >-
An ID for the user's mobile device. This deviceId can be generated
when the app is first installed on a device, and should be unique
enough to prevent collisions between users within the same company.
type: string
required:
- user
- password
- applicationKey
AuthResponse:
xml:
name: auth
type: object
properties:
success:
type: boolean
userId:
type: integer
minimum: 1
employeeId:
type: integer
minimum: 1
key:
type: string
required:
- userId
- key
BenefitCoverageType:
type: string
enum:
- Employee + Family
BenefitGroupPlanEligibility:
type: string
enum:
- hire_date
- manual
- month_after_waiting_period
- waiting_period
BenefitGroupPlanWaitPeriodType:
type: string
enum:
- days
- weeks
- months
- years
BenefitPayType:
type: string
enum:
- Currency
- Percent
BenefitTypeName:
type: string
enum:
- dental
- disability
- flex
- health
- hsa
- life
- other
- reimbursement
- retirement
- supplemental
- variable
- vision
BenefitCoverage:
type: object
properties:
id:
type: string
format: integer
minimum: 1
readOnly: true
shortName:
type: string
description:
type: [string, 'null']
sortOrder:
type: string
format: integer
minimum: 1
benefitPlanId:
type: [string, 'null']
format: integer
minimum: 1
required:
- id
- shortName
- description
- sortOrder
- benefitPlanId
BenefitCoverages:
type: object
properties:
Benefit Coverages:
type: array
items:
$ref: '#/components/schemas/BenefitCoverage'
required:
- Benefit Coverages
BenefitGroup:
type: object
properties:
id:
type: string
format: integer
minimum: 1
readOnly: true
name:
type: string
payPeriod:
$ref: '#/components/schemas/PayGroupPayFrequency'
startDate:
type: string
format: date
endDate:
type: [string, 'null']
format: date
archived:
type: boolean
BenefitGroups:
type: object
properties:
Benefit Groups:
type: array
items:
$ref: '#/components/schemas/BenefitGroup'
required:
- Benefit Groups
BenefitGroupEmployee:
type: object
properties:
id:
type: string
format: integer
minimum: 1
readOnly: true
benefitGroupId:
type: string
format: integer
minimum: 1
employeeId:
type: string
format: integer
minimum: 1
startDate:
type: string
format: date
endDate:
type: [string, 'null']
format: date
archived:
type: boolean
required:
- benefitGroupId
- employeeId
- startDate
BenefitGroupEmployees:
type: object
properties:
Benefit Group Employees:
type: array
items:
$ref: '#/components/schemas/BenefitGroupEmployee'
required:
- Benefit Group Employees
BenefitGroupPlan:
type: object
properties:
id:
type: string
format: integer
minimum: 1
readOnly: true
benefitGroupId:
type: string
format: integer
minimum: 1
benefitPlanId:
type: string
format: integer
minimum: 1
eligibility:
$ref: '#/components/schemas/BenefitGroupPlanEligibility'
waitPeriod:
type: string
format: integer
minimum: 0
waitPeriodType:
$ref: '#/components/schemas/BenefitGroupPlanWaitPeriodType'
startDate:
type: string
format: date
endDate:
type: [string, 'null']
format: date
archived:
type: boolean
required:
- benefitGroupId
- benefitPlanId
- startDate
BenefitGroupPlans:
type: object
properties:
Benefit Group Plans:
type: array
items:
$ref: '#/components/schemas/BenefitGroupPlan'
required:
- Benefit Group Plans
BenefitGroupPlanCost:
type: object
properties:
id:
type: string
format: integer
minimum: 1
readOnly: true
benefitGroupPlanId:
type: string
format: integer
minimum: 1
benefitPlanCoverageId:
type: string
format: integer
minimum: 1
employeeCost:
type: string
format: decimal
minimum: 0
companyCost:
type: string
format: decimal
minimum: 0
startDate:
type: string
format: date
endDate:
type: [string, 'null']
format: date
archived:
type: boolean
required:
- benefitGroupPlanId
- benefitPlanCoverageId
- startDate
BenefitGroupPlanCosts:
type: object
properties:
Benefit Group Plan Costs:
type: array
items:
$ref: '#/components/schemas/BenefitGroupPlanCost'
required:
- Benefit Group Plan Costs
BenefitPlanCoverage:
type: object
properties:
id:
type: string
format: integer
minimum: 1
readOnly: true
benefitPlanId:
type: string
format: integer
minimum: 1
benefitCoverageId:
type: string
format: integer
minimum: 1
totalCost:
type: string
format: decimal
minimum: 0
currencyType:
$ref: '#/components/schemas/CurrencyCode'
startYmd:
type: string
format: date
endYmd:
type: string
format: date
archived:
type: boolean
BenefitPlanCoverages:
type: object
properties:
Benefit Plans Coverages:
type: array
items:
$ref: '#/components/schemas/BenefitPlanCoverage'
required:
- Benefit Plans Coverages
BenefitPlan:
type: object
properties:
id:
type: string
format: integer
minimum: 1
name:
type: string
type:
$ref: '#/components/schemas/BenefitTypeName'
deductionTypeId:
type: [string, 'null']
format: integer
minimum: 1
startDate:
type: string
format: date
endDate:
type: [string, 'null']
format: date
url:
type: [string, 'null']
format: url
meetAcaMin:
anyOf:
- $ref: '#/components/schemas/YesNoDoesNotApply'
- type: 'null'
description:
type: [string, 'null']
archived:
type: boolean
reimbursementAmount:
type: number
format: decimal
reimbursementFrequency:
$ref: '#/components/schemas/ReimbursementFrequency'
BenefitPlans:
type: object
properties:
Benefit Plans:
type: array
items:
$ref: '#/components/schemas/BenefitPlan'
required:
- Benefit Plans
DeductionType:
type: object
properties:
id:
type: integer
minimum: 1
deductionTypeName:
type: string
defaultDeductionCode:
type: string
allowableBenefitTypes:
type: array
items:
$ref: '#/components/schemas/BenefitTypeName'
nonBenefitDeductionType:
type: boolean
canBeCollectedByTrax:
type: boolean
additionalDescription:
type: string
hideAnnualMax:
type: boolean
required:
- id
- deductionTypeName
- defaultDeductionCode
- allowableBenefitTypes
- nonBenefitDeductionType
- canBeCollectedByTrax
- additionalDescription
- hideAnnualMax
BenefitDeduction:
type: object
properties:
benefitPlanId:
type: string
format: integer
minimum: 1
benefitPlanName:
type: string
employeePays:
type: string
format: decimal
minimum: 0
companyPays:
type: string
format: decimal
minimum: 0
employeePaysType:
$ref: '#/components/schemas/BenefitPayType'
companyPaysType:
$ref: '#/components/schemas/BenefitPayType'
currencyCode:
$ref: '#/components/schemas/CurrencyCode'
required:
- benefitPlanId
- benefitPlanName
- employeePays
- companyPays
- employeePaysType
- companyPaysType
- currencyCode
EmployeeBenefitDeduction:
allOf:
- $ref: '#/components/schemas/BenefitDeduction'
- type: object
properties:
employeeId:
type: integer
minimum: 1
employeeNumber:
type: string
employeeName:
type: string
deductionFrequency:
# FIXME: Is this PayFrequency or PayGroupPayFrequency?
$ref: '#/components/schemas/PayGroupPayFrequency'
coverage:
# FIXME: What type is this? Always null in examples.
type: [string, 'null']
required:
- employeeId
- employeeNumber
- employeeName
- deductionFrequency
- coverage
EmployeeBenefitDeductions:
type: object
properties:
employeeBenefitDeductions:
type: array
items:
$ref: '#/components/schemas/EmployeeBenefitDeduction'
required:
- employeeBenefitDeductions
PayrollDeduction:
allOf:
- $ref: '#/components/schemas/BenefitDeduction'
- type: object
properties:
effectiveDate:
type: string
# FIXME: Examples have MM/DD/YYYY
format: date
coverageType:
anyOf:
- $ref: '#/components/schemas/BenefitCoverageType'
- type: 'null'
required:
- effectiveDate
- coverageType
PayrollDeductions:
type: object
properties:
employeeId:
type: integer
minimum: 1
payFrequency:
$ref: '#/components/schemas/PayFrequency'
deductions:
type: array
items:
$ref: '#/components/schemas/PayrollDeduction'
required:
- employeeId
- payFrequency
- deductions
PayrollDeductionsHolder:
type: object
properties:
payrollDeductions:
type: array
items:
$ref: '#/components/schemas/PayrollDeductions'
required:
- payrollDeductions
EmployeeDependent:
type: object
# FIXME: properties are attributes in responses, elements in requests
properties:
id:
type: string
format: integer
minimum: 1
readOnly: true
employeeId:
type: string
format: integer
minimum: 1
firstName:
type: string
middleName:
type: [string, 'null']
lastName:
type: string
relationship:
anyOf:
- $ref: '#/components/schemas/DependentRelationship'
- type: 'null'
gender:
anyOf:
- $ref: '#/components/schemas/Gender'
- type: 'null'
maskedSSN:
type: [string, 'null']
format: ssn
pattern: '^x{3}-x{2}-[0-9]{4}$'
maskedSIN:
type: [string, 'null']
format: sin
pattern: '^x{3}-x{3}-[0-9]{3}$'
dateOfBirth:
type: [string, 'null']
format: date
addressLine1:
type: [string, 'null']
addressLine2:
type: [string, 'null']
city:
type: [string, 'null']
state:
description: >-
In responses, State/Province name, or `false` if not specified.
In request body, State/Province code.
anyOf:
- const: false
- $ref: '#/components/schemas/ProvinceCode'
- $ref: '#/components/schemas/StateCode'
- $ref: '#/components/schemas/ProvinceName'
- $ref: '#/components/schemas/StateName'
zipCode:
type: [string, 'null']
homePhone:
type: [string, 'null']
country:
description: >-
In responses, the country name.
In requests, 2-character ISO country code.
anyOf:
- $ref: '#/components/schemas/Country'
- $ref: '#/components/schemas/CountryCode'
- type: 'null'
isUsCitizen:
anyOf:
- $ref: '#/components/schemas/YesNo'
- type: 'null'
isStudent:
anyOf:
- $ref: '#/components/schemas/YesNo'
- type: 'null'
required:
- employeeId
# Always present in responses, not required in requests:
# https://github.com/OAI/OpenAPI-Specification/issues/1873
# - id
# - firstName
# - middleName
# - lastName
# - relationship
# - gender
# - maskedSSN
# - maskedSIN
# - dateOfBirth
# - addressLine1
# - addressLine2
# - city
# - state
# - zipCode
# - homePhone
# - country
# - isUsCitizen
# - isStudent
EmployeeDependents:
type: object
properties:
Employee Dependents:
type: array
items:
$ref: '#/components/schemas/EmployeeDependent'
required:
- Employee Dependents
EmployeeWithholding:
type: object
properties:
fedWithholding:
type: string
format: integer
stateWithholding:
type: string
format: integer
localWithholding:
type: string
format: integer
additionalFed:
type: string
format: integer
additionalState:
type: string
format: integer
additionalLocal:
type: string
format: integer
taxState:
$ref: '#/components/schemas/StateCode'
taxLocal:
type: string
EmployeeWithholdings:
type: object
properties:
Employee Withholdings:
type: array
items:
$ref: '#/components/schemas/EmployeeWithholding'
required:
- Employee Withholdings
EmployeeDirectDepositAccount:
type: object
properties:
id:
type: string
format: integer
minimum: 1
employeeId:
type: string
format: integer
minimum: 1
accountType:
$ref: '#/components/schemas/AccountType'
maskedAccountNumber:
type: string
pattern: '^X-[0-9]{4}$'
bankName:
type: string
depositOrder:
type: string
format: integer
minimum: 0
ruleType:
$ref: '#/components/schemas/DirectDepositRuleType'
ruleAmount:
type: [string, 'null']
format: decimal
minimum: 0
createdAt:
type: string
format: date-time
updatedAt:
type: [string, 'null']
format: date-time
required:
- id
- employeeId
- accountType
- maskedAccountNumber
- bankName
- depositOrder
- ruleType
- ruleAmount
- createdAt
- updatedAt
EmployeeDirectDepositAccounts:
type: object
properties:
Employee Id:
type: string
format: integer
Employee Name:
type: string
Employee Direct Deposit Accounts:
type: array
items:
$ref: '#/components/schemas/EmployeeDirectDepositAccount'
required:
- Employee Id
- Employee Name
- Employee Direct Deposit Accounts
EmployeePayStubDeduction:
type: object
properties:
externalDeductionId:
type: string
deductionDescription:
type: string
deductionAmount:
type: string
format: decimal
minimum: 0
ytdDeductionAmount:
type: string
format: decimal
minimum: 0
required:
- externalDeductionId
- deductionDescription
- deductionAmount
- ytdDeductionAmount
EmployeePayStubDeposit:
type: object
properties:
depositOrder:
type: string
format: integer
minimum: 0
depositAmount:
type: string
format: decimal
minimum: 0
maskedAccountNumber:
type: string
pattern: '^X-[0-9]{4}$'
accountType:
$ref: '#/components/schemas/AccountType'
required:
- depositOrder
- depositAmount
- maskedAccountNumber
- accountType
EmployeePayStubTax:
type: object
properties:
externalTaxId:
type: string
taxDescription:
type: string
taxAmount:
type: string
format: decimal
minimum: 0
ytdTaxAmount:
type: string
format: decimal
minimum: 0
required:
- externalTaxId
- taxDescription
- taxAmount
- ytdTaxAmount
EmployeePayStubWage:
type: object
properties:
externalWageId:
type: string
wageDescription:
type: string
wageAmount:
type: string
format: decimal
minimum: 0
ytdWageAmount:
type: string
format: decimal
minimum: 0
wageRate:
type: [string, 'null']
format: decimal
minimum: 0
hours:
type: [string, 'null']
format: decimal
minimum: 0
required:
- externalWageId
- wageDescription
- wageAmount
- ytdWageAmount
- wageRate
- hours
EmployeePayStub:
allOf:
- $ref: '#/components/schemas/EmployeeWithholding'
- type: object
properties:
recordId:
type: string
format: integer
minimum: 1
readOnly: true
employeeId:
type: string
format: integer
minimum: 1
externalRecordId:
type: string
minLength: 1
payPeriodFrom:
type: string
format: date
payPeriodTo:
type: string
format: date
payDate:
type: string
format: date
payorName:
type: string
minLength: 1
payorAdd1:
type: string
minLength: 1
payorAdd2:
type: string
payorCity:
type: string
minLength: 1
payorState:
$ref: '#/components/schemas/StateCode'
payorZip:
type: string
minLength: 1
payeeName:
type: string
minLength: 1
currencyCode:
$ref: '#/components/schemas/CurrencyCode'
net:
type: string
format: decimal
minimum: 0
gross:
type: string
format: decimal
minimum: 0
totalTaxes:
type: string
format: decimal
minimum: 0
totalDeductions:
type: string
format: decimal
minimum: 0
ytdNet:
type: string
format: decimal
minimum: 0
ytdGross:
type: string
format: decimal
minimum: 0
ytdTaxes:
type: string
format: decimal
minimum: 0
ytdDeductions:
type: string
format: decimal
minimum: 0
wages:
type: array
items:
$ref: '#/components/schemas/EmployeePayStubWage'
taxes:
type: array
items:
$ref: '#/components/schemas/EmployeePayStubTax'
deductions:
type: array
items:
$ref: '#/components/schemas/EmployeePayStubDeduction'
deposits:
$ref: '#/components/schemas/EmployeePayStubDeposit'
required:
- employeeId
- externalRecordId
- payPeriodFrom
- payPeriodTo
- payDate
- payorName
- payorAdd1
- payorCity
- payorState
- payorZip
- payeeName
- currencyCode
- net
- gross
- totalTaxes
- totalDeductions
- ytdNet
- ytdGross
- ytdTaxes
- ytdDeductions
- fedWithholding
- stateWithholding
- localWithholding
- additionalFed
- additionalState
- additionalLocal
- taxState
- taxLocal
- wages
- taxes
- deductions
- deposits
EmployeeUnpaidPayStub:
type: object
properties:
payDate:
type: string
format: date
required:
- payDate
EmployeeUnpaidPayStubs:
type: object
properties:
employeeId:
type: integer
minimum: 1
unpaidPeriods:
type: array
items:
$ref: '#/components/schemas/EmployeeUnpaidPayStub'
required:
- employeeId
- unpaidPeriods
TimeTrackingId:
type: string
minLength: 1
maxLength: 36
TimeTrackingIdHolder:
type: object
properties:
timeTrackingId:
$ref: '#/components/schemas/TimeTrackingId'
required:
- timeTrackingId
TimeTrackingRecord:
allOf:
- $ref: '#/components/schemas/TimeTrackingIdHolder'
- type: object
properties:
employeeId:
type: string
format: integer
minimum: 1
divisionId:
type: string
format: integer
minimum: 1
departmentId:
type: string
format: integer
minimum: 1
jobTitleId:
type: string
format: integer
minimum: 1
payCode:
type: string
dateHoursWorked:
type: string
format: date
type:
# FIXME: What values can this have, and what is the meaning?
type: string
minLength: 1
maxLength: 1
readOnly: true
payRate:
type: string
format: decimal
minimum: 0
rateType:
$ref: '#/components/schemas/TimeTrackingRateType'
hoursWorked:
type: string
format: decimal
minimum: 0
adjustedHours:
type: string
format: decimal
readOnly: true
jobData:
description: >-
A list of up to four 20 characters max job numbers in comma
delimited format with no spaces
type: string
pattern: '^[^ ]{,20}(,[^ ]{,20}){,3}$'
required:
- hoursWorked
# Required by addRequest:
# https://github.com/OAI/OpenAPI-Specification/issues/1873
# - employeeId
# - dateHoursWorked
# - rateType
TimeTrackingResultResponse:
type: object
properties:
id:
$ref: '#/components/schemas/TimeTrackingId'
message:
type: string
TimeTrackingResult:
type: object
properties:
success:
type: boolean
response:
$ref: '#/components/schemas/TimeTrackingResultResponse'
required:
- success
- response
Result:
type: object
properties:
success:
type: boolean
message:
type: string
required:
- success
- message
headers:
x-bamboohr-error-message:
description: Error message
schema:
type: string
responses:
Error:
description: Error
headers:
# Note: The x-bamboohr-error-messsage header, which always matches
# x-bamboohr-error-message, presumably for backwards-compatibility,
# is not defined here to avoid distracting users with information
# that is not likely to be useful.
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
ReportResponse:
description: Successfully generated report
content:
application/json:
schema:
description: JSON report content
type: string
format: binary
application/pdf:
schema:
description: PDF report content
type: string
format: binary
application/vnd.ms-excel:
schema:
description: XLS report content
type: string
format: binary
text/csv:
schema:
description: Unused type for CSV report content
type: string
format: binary
text/plain:
schema:
description: Currently used type for CSV report content
type: string
format: binary
text/xml:
schema:
description: XML report content
type: string
format: binary
paths:
/v1/benefitgroupemployees/:
get:
tags:
- Benefits
operationId: getBenefitGroupEmployees
summary: Get benefit group employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitGroupEmployees
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupEmployees'
post:
tags:
- Benefits
operationId: addBenefitGroupEmployees
summary: Add a benefit group employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#addBenefitGroupEmployees
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupEmployee'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupEmployees'
/v1/benefitgroupemployees/{id}:
get:
tags:
- Benefits
operationId: getBenefitGroupEmployee
summary: Get benefit group employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitGroupEmployees
parameters:
- $ref: '#/components/parameters/benefitGroupEmployeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupEmployees'
/v1/benefitgroupplancosts/:
get:
tags:
- Benefits
operationId: getBenefitGroupPlanCosts
summary: Get benefit group plan costs
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitGroupPlanCost
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupPlanCosts'
post:
tags:
- Benefits
operationId: addBenefitGroupPlanCost
summary: Add a benefit group plan cost
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#addBenefitGroupPlanCost
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupPlanCost'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupPlanCosts'
'403':
description: >-
User doesn't have access to add the benefit group plan cost.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/benefitgroupplancosts/{id}:
get:
tags:
- Benefits
operationId: getBenefitGroupPlanCost
summary: Get benefit group plan cost
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitGroupPlanCost
parameters:
- $ref: '#/components/parameters/benefitGroupPlanCostId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupPlanCosts'
/v1/benefitgroupplans/:
get:
tags:
- Benefits
operationId: getBenefitGroupPlans
summary: Get benefit group plans
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitGroupPlan
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupPlans'
post:
tags:
- Benefits
operationId: addBenefitGroupPlan
summary: Add a benefit group plan
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#addBenefitGroupPlan
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupPlan'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupPlans'
'403':
description: >-
User doesn't have access to add the benefit group plan.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/benefitgroupplans/{id}:
get:
tags:
- Benefits
operationId: getBenefitGroupPlan
summary: Get benefit group plan
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitGroupPlan
parameters:
- $ref: '#/components/parameters/benefitGroupPlanId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroupPlans'
/v1/benefitgroups/:
get:
tags:
- Benefits
operationId: getBenefitGroups
summary: Get benefit groups
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitGroup
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroups'
post:
tags:
- Benefits
operationId: addBenefitGroup
summary: Add a benefit group
description: >-
name and startDate are required.
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#addBenefitGroup
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroup'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroups'
'403':
description: >-
Current user doesn't have access to add the benefit group.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/benefitgroups/{id}:
get:
tags:
- Benefits
operationId: getBenefitGroup
summary: Get benefit group
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitGroup
parameters:
- $ref: '#/components/parameters/benefitGroupId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroups'
put:
tags:
- Benefits
operationId: changeBenefitGroup
summary: Change a benefit group
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#changeBenefitGroup
parameters:
- $ref: '#/components/parameters/benefitGroupId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroup'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitGroups'
'403':
description: >-
Current user doesn't have access to change the benefit group in
this way.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/benefitplancoverages/:
get:
tags:
- Benefits
operationId: getBenefitPlanCoverages
summary: Get benefit plan coverages
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitPlanCoverage
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlanCoverages'
post:
tags:
- Benefits
operationId: addBenefitPlanCoverage
summary: Add a benefit plan coverage
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#addBenefitPlanCoverage
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlanCoverage'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlanCoverages'
'403':
description: >-
Current user doesn't have access to add the benefit plan coverage.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/benefitplancoverages/{id}:
get:
tags:
- Benefits
operationId: getBenefitPlanCoverage
summary: Get benefit plan coverage
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitPlanCoverage
parameters:
- $ref: '#/components/parameters/benefitPlanCoverageId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlanCoverages'
put:
tags:
- Benefits
operationId: changeBenefitPlanCoverage
summary: Change a benefit plan coverage
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#changeBenefitPlanCoverage
parameters:
- $ref: '#/components/parameters/benefitPlanCoverageId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlanCoverage'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlanCoverages'
'403':
description: >-
Current user doesn't have access to change the benefit plan
coverage in this way.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/benefitplans/:
get:
tags:
- Benefits
operationId: getBenefitPlans
summary: Get benefit plans
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitPlan
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlans'
post:
tags:
- Benefits
operationId: addBenefitPlan
summary: Add a benefit plan
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#addBenefitPlan
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlan'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlans'
'403':
description: >-
Current user doesn't have access to add the benefit plan.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/benefitplans/{id}:
get:
tags:
- Benefits
operationId: getBenefitPlan
summary: Get benefit plan
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getBenefitPlan
parameters:
- $ref: '#/components/parameters/benefitPlanId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlans'
put:
tags:
- Benefits
operationId: changeBenefitPlan
summary: Change a benefit plan
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#changeBenefitPlan
parameters:
- $ref: '#/components/parameters/benefitPlanId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlan'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitPlans'
'403':
description: >-
Current user doesn't have access to change the benefit plan in
this way.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/benefits/settings/deduction_types/all:
get:
tags:
- Benefits
operationId: getDedutionTypes
summary: Get benefit deduction types
description: >-
The owner of the API key used must have access to benefit settings.
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getDedutionTypes
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeductionType'
/v1/benefitcoverages/:
get:
tags:
- Benefits
operationId: getCoverages
summary: Get benefit coverages
description: >-
The owner of the API key used must have access to benefit settings.
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getCoverages
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitCoverages'
/v1/benefitcoverages/{id}:
get:
tags:
- Benefits
operationId: getCoverage
summary: Get benefit coverage
description: >-
The owner of the API key used must have access to benefit settings.
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getCoverages
parameters:
- $ref: '#/components/parameters/benefitCoverageId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitCoverages'
/v1/employee/deductions/{id}:
get:
tags:
- Benefits
operationId: getEmployeeDeductions
summary: Get employee deductions by benefit plan
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getEmployeeDeductions
parameters:
- $ref: '#/components/parameters/benefitPlanId'
- $ref: '#/components/parameters/employeeIdFilter'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeBenefitDeductions'
/v1/employee/plans/{id}:
get:
tags:
- Benefits
operationId: getEmployeePlans
summary: Get plan deductions by employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getEmployeePlans
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeBenefitDeductions'
/v1/employeedependents/:
get:
tags:
- Benefits
operationId: getEmployeeDependents
summary: Get employee dependents
description: >-
The owner of the API key used must have access to benefit settings.
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getEmployeeDependent
parameters:
- $ref: '#/components/parameters/employeeIdFilter'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeDependents'
post:
tags:
- Benefits
operationId: addEmployeeDependent
summary: Add an employee dependent
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#addEmployeeDependent
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeDependent'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeDependents'
'403':
description: >-
Current user doesn't have access to add a dependent.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employeedependents/{id}:
get:
tags:
- Benefits
operationId: getEmployeeDependent
summary: Get an employee dependent
description: >-
The owner of the API key used must have access to benefit settings.
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getEmployeeDependent
parameters:
- $ref: '#/components/parameters/dependentId'
- $ref: '#/components/parameters/employeeIdFilter'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeDependents'
put:
tags:
- Benefits
operationId: changeEmployeeDependent
summary: Change an employee dependent
description: >-
The owner of the API key used must have access to benefit settings.
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#changeEmployeeDependent
parameters:
- $ref: '#/components/parameters/dependentId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeDependent'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeDependents'
'403':
description: >-
Current user doesn't have access to change the dependent in the
requested way.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employees/:
post:
tags:
- Employees
operationId: addEmployee
summary: Add an employee
description: firstName and lastName fields are required.
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#addEmployee
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Employee'
responses:
default:
$ref: '#/components/responses/Error'
'201':
description: Success
headers:
location:
description: API URL for the new employee.
schema:
type: string
format: url
/v1/employees/directory:
get:
tags:
- Employees
operationId: getDirectory
summary: Get a directory of employees
description: |-
Includes the following fields:
- canUploadPhoto
- department
- displayName
- division
- firstName
- gender
- jobTitle
- lastName
- linkedIn
- location
- mobilePhone
- photoUploaded
- photoUrl
- preferredName
- workEmail
- workPhone
- workPhoneExtension
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#getEmployeeDirectory
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeDirectory'
'403':
description: The directory has not been shared company-wide.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employees/{id}:
get:
tags:
- Employees
operationId: getEmployee
summary: Get employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#getEmployee
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/employeeFields'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Employee'
'403':
description: User does not have permission to view employee
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: Employee not found
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
post:
tags:
- Employees
operationId: updateEmployee
summary: Update employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#updateEmployee
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Employee'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
'403':
description: User does not have permission to update ANY of the requested fields
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: Employee not found
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employees/{id}/files/:
post:
tags:
- Employees
operationId: uploadEmployeeFile
summary: Upload an employee file
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#uploadEmployeeFile
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadFileRequest'
responses:
default:
$ref: '#/components/responses/Error'
'201':
description: Success
'404':
description: The employee ID was not found.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'413':
description: The file size exceeds 20MB or the storage limit for the company.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employees/files/categories/:
post:
tags:
- Employees
operationId: addEmployeeFileCategory
summary: Add an employee file category
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#addEmployeeCategory
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddEmployeeFileCategoryRequest'
responses:
default:
$ref: '#/components/responses/Error'
'201':
description: Success
'403':
description: User does not have permission to see the requested employee or the employee's files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: No files are found for the requested employee.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employees/{id}/files/view/:
get:
tags:
- Employees
operationId: listEmployeeFiles
summary: List employee files and categories
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#listEmployeeFiles
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeFiles'
'403':
description: User does not have permission to see the requested employee or the employee's files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: No files are found for the requested employee.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employees/{id}/files/{fileId}/:
delete:
tags:
- Employees
operationId: deleteEmployeeFile
summary: Delete an employee file
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#deleteEmployeeFile
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/employeeFileId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
'403':
description: User does not have permission to see the requested employee or the employee's files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: The requested employee or file was not found
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
get:
tags:
- Employees
operationId: downloadEmployeeFile
summary: Download an employee file
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#downloadEmployeeFile
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/employeeFileId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
'*/*':
schema:
description: Employee file content
type: string
format: binary
'403':
description: User does not have permission to see the requested employee or the employee's files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: The requested employee or file was not found
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
post:
tags:
- Employees
operationId: updateEmployeeFile
summary: Update an employee file
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#updateEmployeeFile
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/employeeFileId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFileRequest'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
'403':
description: User does not have permission to see the requested employee or the employee's files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: The requested employee or category was not found
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employees/{id}/photo:
post:
tags:
- Photos
operationId: uploadEmployeePhoto
summary: Upload an employee photo
description: >-
Uploaded image must be square and at least 150x150.
Content-Type header of file part is currently ignored and type is
determined from file content. BMP, GIF, JPEG, PNG, and TIFF are
supported. SVG is not.
externalDocs:
url: https://www.bamboohr.com/api/documentation/photos.php#postPhoto
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadPhotoRequest'
encoding:
file:
contentType: >-
image/bmp,
image/gif,
image/jpeg,
image/png,
image/tiff
responses:
default:
$ref: '#/components/responses/Error'
'201':
description: Success
'404':
description: The employee ID was not found.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'413':
description: The file size exceeds 20MB or the storage limit for the company.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'415':
description: The file format is not supported or the width doesn't match the height.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employees/{id}/photo/{size}:
get:
tags:
- Photos
operationId: downloadEmployeePhoto
summary: Get an employee photo
description: >-
Response Content-Type header is always image/jpeg, but the actual
response content type matches the uploaded format, which may not be
JPEG.
externalDocs:
url: https://www.bamboohr.com/api/documentation/photos.php#getPhoto
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/photoSize'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
image/jpeg:
schema:
description: Employee photo data
type: string
format: binary
/v1/employees/{id}/tables/compensation:
get:
tags:
- Tables
operationId: getCompensationTable
summary: Get the Compensation table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTable
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CompensationChange'
/v1/employees/all/tables/compensation:
get:
tags:
- Tables
operationId: getAllCompensationTables
summary: Get the Compensation tables for all employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CompensationChange'
/v1/employees/changed/tables/compensation:
get:
tags:
- Tables
operationId: getChangedCompensationTable
summary: Get the Compensation tables for changed employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
parameters:
- $ref: '#/components/parameters/since'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CompensationChange'
/v1_1/employees/{id}/tables/compensation:
post:
tags:
- Tables
operationId: addCompensationTableRow
summary: Add a row to the Compensation table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#addRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CompensationChange'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/compensation/{rowId}:
delete:
tags:
- Tables
operationId: deleteCompensationTableRow
summary: Delete a row of the Compensation table for an employee
externalDocs:
url: https://documentation.bamboohr.com/reference/delete-employee-table-row-v1
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
/v1_1/employees/{id}/tables/compensation/{rowId}:
post:
tags:
- Tables
operationId: updateCompensationTableRow
summary: Update a row of the Compensation table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#updateRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CompensationChange'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/customDriversLicenseInformation:
get:
tags:
- Tables
operationId: getDriversLicenseTable
summary: Get the Driver's License Information table rows for an employee.
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTable
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
maxItems: 1
minItems: 1
items:
type: array
items:
$ref: '#/components/schemas/DriversLicense'
/v1/employees/all/tables/customDriversLicenseInformation:
get:
tags:
- Tables
operationId: getAllDriversLicenseTables
summary: >-
Get the Driver's License Information table rows for all employees.
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
type: array
items:
$ref: '#/components/schemas/DriversLicense'
/v1/employees/changed/tables/customDriversLicenseInformation:
get:
tags:
- Tables
operationId: getChangedDriversLicenseTable
summary: >-
Get the Driver's License Information table rows for changed employees.
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
parameters:
- $ref: '#/components/parameters/since'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DriversLicense'
/v1_1/employees/{id}/tables/customDriversLicenseInformation:
post:
tags:
- Tables
operationId: addDriversLicenseTableRow
summary: >-
Add a row to the Driver's License Information table for an employee.
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#addRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DriversLicense'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/customDriversLicenseInformation/{rowId}:
delete:
tags:
- Tables
operationId: deleteDriversLicenseTableRow
summary: Delete a row of the Driver's License Information table for an employee.
externalDocs:
url: https://documentation.bamboohr.com/reference/delete-employee-table-row-v1
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
/v1_1/employees/{id}/tables/customDriversLicenseInformation/{rowId}:
post:
tags:
- Tables
operationId: updateDriversLicenseTableRow
summary: >-
Update a row of the Driver's License Information table for an employee.
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#updateRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DriversLicense'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/dependents:
get:
tags:
- Tables
operationId: getDependentsTable
summary: Get the Dependents table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTable
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Dependent'
/v1/employees/all/tables/dependents:
get:
tags:
- Tables
operationId: getAllDependentsTables
summary: Get the Dependents tables for all employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Dependent'
/v1/employees/changed/tables/dependents:
get:
tags:
- Tables
operationId: getChangedDependentsTable
summary: Get the Dependents tables for changed employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
parameters:
- $ref: '#/components/parameters/since'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Dependent'
/v1_1/employees/{id}/tables/dependents:
post:
tags:
- Tables
operationId: addDependentsTableRow
summary: Add a row to the Dependents table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#addRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Dependent'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/dependents/{rowId}:
delete:
tags:
- Tables
operationId: deleteDependentsTableRow
summary: Delete a row of the Dependents table for an employee
externalDocs:
url: https://documentation.bamboohr.com/reference/delete-employee-table-row-v1
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
/v1_1/employees/{id}/tables/dependents/{rowId}:
post:
tags:
- Tables
operationId: updateDependentsTableRow
summary: Update a row of the Dependents table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#updateRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Dependent'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/emergencyContacts:
get:
tags:
- Tables
operationId: getEmergencyContactsTable
summary: Get the Emergency Contacts table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTable
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmergencyContact'
/v1/employees/all/tables/emergencyContacts:
get:
tags:
- Tables
operationId: getAllEmergencyContactsTables
summary: Get the Emergency Contacts tables for all employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmergencyContact'
/v1/employees/changed/tables/emergencyContacts:
get:
tags:
- Tables
operationId: getChangedEmergencyContactsTable
summary: Get the Emergency Contacts tables for changed employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
parameters:
- $ref: '#/components/parameters/since'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmergencyContact'
/v1_1/employees/{id}/tables/emergencyContacts:
post:
tags:
- Tables
operationId: addEmergencyContactsTableRow
summary: Add a row to the Emergency Contacts table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#addRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EmergencyContact'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/emergencyContacts/{rowId}:
delete:
tags:
- Tables
operationId: deleteEmergencyContactsTableRow
summary: Delete a row of the Emergency Contacts table for an employee
externalDocs:
url: https://documentation.bamboohr.com/reference/delete-employee-table-row-v1
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
/v1_1/employees/{id}/tables/emergencyContacts/{rowId}:
post:
tags:
- Tables
operationId: updateEmergencyContactsTableRow
summary: Update a row of the Emergency Contacts table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#updateRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EmergencyContact'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/employmentStatus:
get:
tags:
- Tables
operationId: getEmploymentStatusTable
summary: Get the Employment Status table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTable
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmploymentStatusChange'
/v1/employees/all/tables/employmentStatus:
get:
tags:
- Tables
operationId: getAllEmploymentStatusTables
summary: Get the Employment Status tables for all employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmploymentStatusChange'
/v1/employees/changed/tables/employmentStatus:
get:
tags:
- Tables
operationId: getChangedEmploymentStatusTable
summary: Get the Employment Status tables for changed employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
parameters:
- $ref: '#/components/parameters/since'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmploymentStatusChange'
/v1_1/employees/{id}/tables/employmentStatus:
post:
tags:
- Tables
operationId: addEmploymentStatusTableRow
summary: Add a row to the Employment Status table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#addRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EmploymentStatusChange'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/employmentStatus/{rowId}:
delete:
tags:
- Tables
operationId: deleteEmploymentStatusTableRow
summary: Delete a row of the Employment Status table for an employee
externalDocs:
url: https://documentation.bamboohr.com/reference/delete-employee-table-row-v1
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
/v1_1/employees/{id}/tables/employmentStatus/{rowId}:
post:
tags:
- Tables
operationId: updateEmploymentStatusTableRow
summary: Update a row of the Employment Status table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#updateRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EmploymentStatusChange'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/jobInfo:
get:
tags:
- Tables
operationId: getJobInfoTable
summary: Get the Job Info table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTable
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/JobInfo'
/v1/employees/all/tables/jobInfo:
get:
tags:
- Tables
operationId: getAllJobInfoTables
summary: Get the Job Info tables for all employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/JobInfo'
/v1/employees/changed/tables/jobInfo:
get:
tags:
- Tables
operationId: getChangedJobInfoTable
summary: Get the Job Info tables for changed employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#getTables
parameters:
- $ref: '#/components/parameters/since'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/JobInfo'
/v1_1/employees/{id}/tables/jobInfo:
post:
tags:
- Tables
operationId: addJobInfoTableRow
summary: Add a row to the Job Info table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#addRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/JobInfo'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/tables/jobInfo/{rowId}:
delete:
tags:
- Tables
operationId: deleteJobInfoTableRow
summary: Delete a row of the Job Info table for an employee
externalDocs:
url: https://documentation.bamboohr.com/reference/delete-employee-table-row-v1
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
/v1_1/employees/{id}/tables/jobInfo/{rowId}:
post:
tags:
- Tables
operationId: updateJobInfoTableRow
summary: Update a row of the Job Info table for an employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/tables.php#updateRowOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/rowId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/JobInfo'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
/v1/employees/{id}/time_off/balance_adjustment/:
put:
tags:
- TimeOff
operationId: adjustTimeOffBalance
summary: Adjust Time Off Balance
description: >-
Same effect as `addHistoryItem` with `AddTimeOffHistoryOverrideRequest`
except that each adjustement is limited to -24 to 24 hours.
externalDocs:
url: https://documentation.bamboohr.com/reference#time-off-adjust-time-off-balance
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AdjustTimeOffBalanceRequest'
responses:
default:
$ref: '#/components/responses/Error'
'201':
description: Success
headers:
location:
description: API URL for the new time off history item.
schema:
type: string
format: url
/v1/employees/{id}/time_off/calculator/:
get:
tags:
- TimeOff
operationId: estimateFutureBalance
summary: Estimate future time off balances
description: >-
The results will only contain time off types that the API user is
authorized to see.
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_off.php#estimateFutureBalance
parameters:
- $ref: '#/components/parameters/employeeId'
- $ref: '#/components/parameters/endDate'
- $ref: '#/components/parameters/precision'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TimeOffEstimates'
/v1/employees/{id}/time_off/history/:
put:
tags:
- TimeOff
# Can't define multiple operations on same path in OAS3
# https://github.com/OAI/OpenAPI-Specification/issues/182
operationId: addHistoryItem
summary: Add a time-off history item.
description: >-
Adds a time-off history item to accrue or use time-off on a given date.
The history item can be for used time-off which is associated with a
time-off request. This is added using `AddTimeOffHistoryItemRequest`
and documented as [Add a time off history
entry](https://www.bamboohr.com/api/documentation/time_off.php#addHistoryEntry).
Alternatively the history item can be an override which is not
associated with a time-off request. This is added using
`AddTimeOffHistoryOverrideRequest` and documented as [Add a time off
history
override](https://www.bamboohr.com/api/documentation/time_off.php#addHistoryOverride). This has the same effect as the `adjustTimeOffBalance`
operation without the restriction for hours to be between -24 and 24.
# Only one url is permitted in OAS3
# https://github.com/OAI/OpenAPI-Specification/issues/1034
# externalDocs:
# url: https://www.bamboohr.com/api/documentation/time_off.php#addHistoryOverride
# url: https://www.bamboohr.com/api/documentation/time_off.php#addHistoryEntry
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddTimeOffHistoryRequest'
responses:
default:
$ref: '#/components/responses/Error'
'201':
description: Success
headers:
location:
description: API URL for the new time off request.
schema:
type: string
format: url
/v1_1/employees/{id}/time_off/policies/:
get:
tags:
- TimeOff
operationId: listTimeOffPolicies
summary: List assigned Time Off Policies for an Employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_off.php#listTimeOffPoliciesOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmployeeTimeOffPolicy'
put:
tags:
- TimeOff
operationId: assignTimeOffPolicies
summary: Assign Time Off Policies for an Employee
description: >-
A time off policy will be assigned to the employee with accruals
starting on the date specified.
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_off.php#assignTimeOffPoliciesOnePointOne
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmployeeTimeOffPolicy'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmployeeTimeOffPolicy'
/v1/employees/{id}/time_off/request/:
put:
tags:
- TimeOff
operationId: addTimeOffRequest
summary: Add a time off request
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_off.php#addRequest
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddTimeOffRequestBody'
responses:
default:
$ref: '#/components/responses/Error'
'201':
description: Success
/v1/employees/changed/:
get:
tags:
- Changes
operationId: getChangedEmployees
summary: Changed employees
externalDocs:
url: https://www.bamboohr.com/api/documentation/changes.php
parameters:
- $ref: '#/components/parameters/since'
- $ref: '#/components/parameters/changeType'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeList'
/employees/photos/:
servers:
- url: https://{subdomain}.bamboohr.com
variables:
subdomain:
default: mycompany
description: >-
The subdomain used to access your account (If you access BambooHR at
https://mycompany.bamboohr.com, then the subdomain is "mycompany")
get:
tags:
- Photos
operationId: downloadEmployeePhotoByHash
summary: Get an employee photo by email hash
description: >-
The image size is medium (170x170).
Response Content-Type header is always image/jpeg, but the actual
response content type matches the uploaded format, which may not be
JPEG.
externalDocs:
url: https://www.bamboohr.com/api/documentation/photos.php#useBambooServer
security: []
parameters:
- $ref: '#/components/parameters/hashedEmail'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
image/jpeg:
schema:
description: Employee photo data
type: string
format: binary
'301':
description: Employee does not have a photo.
headers:
location:
description: Redirect to a blank employee photo.
schema:
type: string
format: url
/v1/employee_direct_deposit_accounts/{id}:
delete:
tags:
- Payroll
operationId: clearDirectDeposit
summary: Clear an employee's direct deposit information
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#clearDirectDeposit
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'403':
description: >-
User doesn't have access to edit employee direct deposit
information.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
get:
tags:
- Payroll
operationId: getDirectDeposit
summary: Get an employee's direct deposit information
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#getDirectDeposit
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeDirectDepositAccounts'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
post:
tags:
- Payroll
operationId: addDirectDeposit
summary: Add an employee's direct deposit information
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#addDirectDeposit
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmployeeDirectDepositAccount'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeDirectDepositAccounts'
'403':
description: >-
User doesn't have access to add employee direct deposit information.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employee_pay_stub:
post:
tags:
- Payroll
operationId: addPayStub
summary: Add an employee's paystub
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#addPayStub
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmployeePayStub'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeePayStub'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employee_pay_stub/{id}:
delete:
tags:
- Payroll
operationId: clearPayStub
summary: Delete an employee's paystub
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#clearPayStub
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'403':
description: >-
User doesn't have access to edit the employee's paystub.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
get:
tags:
- Payroll
operationId: getPayStub
summary: Get an employee's paystub
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#getPayStub
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeePayStub'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employee_unpaid_pay_stubs:
post:
tags:
- Payroll
operationId: addUnpaidPayStubs
summary: Add an employee's unpaid paystubs
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#addUnpaidPayStubs
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmployeeUnpaidPayStubs'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeUnpaidPayStubs'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employee_unpaid_pay_stubs/{id}:
delete:
tags:
- Payroll
operationId: clearUnpaidPayStubs
summary: Clear an employee's unpaid paystubs
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#clearUnpaidPayStubs
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'403':
description: >-
User doesn't have access to edit the employee unpaid paystub
information.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
get:
tags:
- Payroll
operationId: getUnpaidPayStubs
summary: Get an employee's unpaid paystubs
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#getUnpaidPayStubs
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeUnpaidPayStubs'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/employee_withholding/{id}:
delete:
tags:
- Payroll
operationId: clearWithholdings
summary: Clear an employee's default withholdings
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#clearWithholdings
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'403':
description: >-
User doesn't have access to edit employee withholdings information.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
get:
tags:
- Payroll
operationId: getWithholdings
summary: Get an employee's default withholdings
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#getWithholdings
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeWithholdings'
'400':
description: Invalid employee ID
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
post:
tags:
- Payroll
operationId: addWithholdings
summary: Add an employee's default withholdings
externalDocs:
url: https://www.bamboohr.com/api/documentation/payroll.php#addWithholdings
parameters:
- $ref: '#/components/parameters/employeeId'
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmployeeWithholding'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeWithholdings'
'403':
description: >-
User doesn't have access to add employee withholdings information.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/files/view/:
get:
tags:
- Employees
operationId: listCompanyFiles
summary: List company files and categories
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#listCompanyFiles
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyFiles'
'403':
description: User does not have permission to see the company files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: No files or categories are found.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/files/categories/:
post:
tags:
- Employees
operationId: addCompanyFileCategory
summary: Add a company file category
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#addCompanyCategory
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddCompanyFileCategoryRequest'
responses:
default:
$ref: '#/components/responses/Error'
'201':
description: Success
'403':
description: User does not have permission to see the requested employee or the employee's files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: No files are found for the requested employee.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/files/{fileId}/:
delete:
tags:
- Employees
operationId: deleteCompanyFile
summary: Delete a company file
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#deleteCompanyFile
parameters:
- $ref: '#/components/parameters/companyFileId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
'403':
description: User does not have permission to see the requested file.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: The file was not found.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
get:
tags:
- Employees
operationId: downloadCompanyFile
summary: Download a company file
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#downloadCompanyFile
parameters:
- $ref: '#/components/parameters/companyFileId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
'*/*':
schema:
description: Company file content
type: string
format: binary
'403':
description: User does not have permission to see the company files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: The file was not found.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
post:
tags:
- Employees
operationId: updateCompanyFile
summary: Update a company file
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#updateCompanyFile
parameters:
- $ref: '#/components/parameters/companyFileId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFileRequest'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
'403':
description: User does not have permission to see the company files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: The file or category was not found.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/files/:
post:
tags:
- Employees
operationId: uploadCompanyFile
summary: Upload a company file
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#uploadCompanyFile
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadFileRequest'
responses:
default:
$ref: '#/components/responses/Error'
'201':
description: Success
'403':
description: User does not have permission to see the company files.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: The category ID was not found.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'413':
description: The file size exceeds 20MB or the storage limit for the company.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/login:
post:
tags:
- Login
operationId: requestSecretKey
summary: Login
externalDocs:
url: https://www.bamboohr.com/api/documentation/login.php
security: []
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/LoginRequest'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AuthResponse'
/v1/meta/fields/:
get:
tags:
- Metadata
operationId: getFields
summary: Get a list of fields
externalDocs:
url: https://www.bamboohr.com/api/documentation/metadata.php#getFields
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FieldsMetadata'
/v1/meta/lists/:
get:
tags:
- Metadata
operationId: getLists
summary: Get the details for "list" fields in an account
externalDocs:
url: https://www.bamboohr.com/api/documentation/metadata.php#getLists
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ListsMetadata'
/v1/meta/lists/{id}:
get:
tags:
- Metadata
operationId: getList
summary: Get the details for a "list" field in an account
parameters:
- $ref: '#/components/parameters/fieldId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ListMetadata'
post:
tags:
- Metadata
operationId: addListOptions
summary: Add or update values for "list" fields in an account
externalDocs:
url: https://www.bamboohr.com/api/documentation/metadata.php#addLists
parameters:
- $ref: '#/components/parameters/fieldId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ListOptionsUpdate'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ListMetadata'
'404':
description: Nonexistent list or option ID specified
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'409':
description: Duplicate value would be created
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/meta/tables/:
get:
tags:
- Metadata
operationId: getTables
summary: Get a list of table fields
externalDocs:
url: https://www.bamboohr.com/api/documentation/metadata.php#getTables
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TablesMetadata'
/v1/meta/time_off/policies/:
get:
tags:
- Metadata
operationId: getTimeOffPolicies
summary: Get a list of time off Policies
externalDocs:
url: https://www.bamboohr.com/api/documentation/metadata.php#getTimeOffPolicies
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TimeOffPolicies'
/v1/meta/time_off/types/:
get:
tags:
- Metadata
operationId: getTimeOffTypes
summary: Get a list of time off types
externalDocs:
url: https://www.bamboohr.com/api/documentation/metadata.php#getTimeOffTypes
parameters:
- $ref: '#/components/parameters/timeOffTypesMode'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TimeOffTypes'
/v1/meta/users/:
get:
tags:
- Metadata
operationId: getUsers
summary: Get a list of users
externalDocs:
url: https://www.bamboohr.com/api/documentation/metadata.php#getUsers
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Users'
/v1/payroll/deductions/{id}:
get:
tags:
- Payroll
operationId: getDeductionsForEmployee
summary: Get benefit deductions for employee
externalDocs:
url: https://www.bamboohr.com/api/documentation/benefits.php#getDeductionsForEmployee
parameters:
- $ref: '#/components/parameters/employeeId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PayrollDeductionsHolder'
# Note: Moved to x-ms-paths during build
/v1/reports/{id}?format=JSON:
get:
tags:
- Employees
operationId: getReport
summary: Request a company report
description: >-
Use this resource to request one of your pre-existing company reports
from the reporting section. You can get the report number by hovering
over the report name on the reports page and grabbing the ID. At
present, only reports from the Company Reports section are supported.
In the future we may implement reports from the Report Library section
if there is enough demand for it. The report numbers used in this
request are different in each company.
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#requestCompanyReport
parameters:
- $ref: '#/components/parameters/reportId'
- $ref: '#/components/parameters/filterDuplicates'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeReport'
'404':
description: Nonexistent report id
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/reports/{id}:
get:
tags:
- Employees
operationId: getReportInFormat
summary: Request a company report in a specified file format
description: >-
Use this resource to request one of your pre-existing company reports
from the reporting section. You can get the report number by hovering
over the report name on the reports page and grabbing the ID. At
present, only reports from the Company Reports section are supported.
In the future we may implement reports from the Report Library section
if there is enough demand for it. The report numbers used in this
request are different in each company.
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#requestCompanyReport
parameters:
- $ref: '#/components/parameters/reportId'
- $ref: '#/components/parameters/reportFormat'
- $ref: '#/components/parameters/filterDuplicates'
responses:
default:
$ref: '#/components/responses/Error'
'200':
$ref: '#/components/responses/ReportResponse'
'404':
description: Nonexistent report id
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/reports/custom?format=JSON:
post:
tags:
- Employees
operationId: getCustomReport
summary: Request a custom report
description: >-
Use this resource to request BambooHR generate a report. The custom
report will return employees regardless of their status, "Active" or
"Inactive". This differs from the UI, which by default applies a quick
filter to display only "Active" employees.
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#requestCustomReport
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomReportRequest'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeReport'
/v1/reports/custom:
post:
tags:
- Employees
operationId: getCustomReportInFormat
summary: Request a custom report in a specified file format
description: >-
Use this resource to request BambooHR generate a report. The custom
report will return employees regardless of their status, "Active" or
"Inactive". This differs from the UI, which by default applies a quick
filter to display only "Active" employees.
externalDocs:
url: https://www.bamboohr.com/api/documentation/employees.php#requestCustomReport
parameters:
- $ref: '#/components/parameters/reportFormat'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomReportRequest'
responses:
default:
$ref: '#/components/responses/Error'
'200':
$ref: '#/components/responses/ReportResponse'
/v1/timetracking/add:
post:
tags:
- TimeTracking
operationId: addRecord
summary: Add a time tracking record
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_tracking.php#addRequest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TimeTrackingRecord'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TimeTrackingIdHolder'
'400':
description: >-
If any required field is missing, any of the ids are invalid, or
the posted JSON is not valid.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/timetracking/adjust:
put:
tags:
- TimeTracking
operationId: adjustRecord
summary: Adjust a time tracking record
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_tracking.php#adjustRequest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TimeTrackingRecord'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TimeTrackingIdHolder'
'400':
description: >-
If any required field is missing, any of the ids are invalid, or
the posted JSON is not valid.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/timetracking/delete/{id}:
put:
tags:
- TimeTracking
operationId: deleteRecord
summary: Delete a time tracking record
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_tracking.php#deleteRecord
parameters:
- $ref: '#/components/parameters/timeTrackingId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'400':
description: >-
Time tracking id cannot be found.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/timetracking/record:
post:
tags:
- TimeTracking
operationId: bulkAddEdit
summary: Bulk Add/Adjust time tracking records
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_tracking.php#bulkAddEdit
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TimeTrackingRecord'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TimeTrackingResult'
'400':
description: >-
If any required field is missing, any of the ids are invalid, or
the posted JSON is not valid.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/timetracking/record/{id}:
get:
tags:
- TimeTracking
operationId: getRecord
summary: Get a time tracking record
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_tracking.php#getRequest
parameters:
- $ref: '#/components/parameters/timeTrackingId'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TimeTrackingRecord'
/v1/time_off/requests/:
get:
tags:
- TimeOff
operationId: getTimeOffRequests
summary: Get time off requests
description: >-
The response will be limited to those employees and time off types that
the owner of the API key used to make the request has view access to.
When using start and/or end dates the time off will show up if any day
in the time off request falls within the dates specified, even if part
of time off falls outside of the time specified.
Clients should be ready for any number of "note" elements.
If there are zero notes for a request then the "notes" tag will not be
included in the response.
Newer time off requests may also include details for each day of the
request in a element.
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_off.php#getRequests
parameters:
- $ref: '#/components/parameters/timeOffRequestIdQuery'
- $ref: '#/components/parameters/timeOffRequestAction'
- $ref: '#/components/parameters/timeOffRequestEmployeeId'
- $ref: '#/components/parameters/startDate'
- $ref: '#/components/parameters/endDate'
- $ref: '#/components/parameters/timeOffType'
- $ref: '#/components/parameters/timeOffRequestStatus'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TimeOffRequests'
/v1/time_off/requests/{id}/status/:
put:
tags:
- TimeOff
operationId: updateTimeOffRequestStatus
summary: Change a request status
description: >-
Any email alerts that would normally be triggered by the web UI will be
triggered by the use of this API.
The note provided will be used as the manager's note if the status is
approved or denied.
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_off.php#changeRequest
parameters:
- $ref: '#/components/parameters/timeOffRequestId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTimeOffRequestStatusRequest'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
'403':
description: User doesn't have access to change the status in this way.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
'404':
description: The time off request ID doesn't exist.
headers:
x-bamboohr-error-message:
$ref: '#/components/headers/x-bamboohr-error-message'
x-ms-error-response: true
/v1/time_off/whos_out/:
get:
tags:
- TimeOff
operationId: getWhosOut
summary: Get a list of who's out, including company holidays
description: >-
This API will return a list, sorted by date, of employees who will be
out, and company holidays, for a period of time.
The results may contain time off elements for which the API user cannot
request details.
externalDocs:
url: https://www.bamboohr.com/api/documentation/time_off.php#getWhosOut
parameters:
- $ref: '#/components/parameters/whoIsOutStartDate'
- $ref: '#/components/parameters/whoIsOutEndDate'
responses:
default:
$ref: '#/components/responses/Error'
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/WhoIsOutCalendar'
# Suppress incorrect warnings for schemas only referenced by allOf/anyOf/oneOf
# https://github.com/OpenAPITools/openapi-generator/issues/4193
x-suppress-warning:
- $ref: '#/components/schemas/AddTimeOffHistoryItemRequest'
- $ref: '#/components/schemas/AddTimeOffHistoryOverrideRequest'
# Not currently used for enforcement
- $ref: '#/components/schemas/StateCode'
- $ref: '#/components/schemas/StateName'
- $ref: '#/components/schemas/ProvinceCode'
- $ref: '#/components/schemas/ProvinceName'