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'