openapi: 3.0.0 info: title: BambooHR API description: >- This is the majority of the API requests including some that are not documented. http://www.bamboohr.com/api/documentation/ version: v1 license: name: MIT url: http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT x-konfig-ignore: object-with-no-properties: true potential-incorrect-type: true servers: - url: https://api.bamboohr.com/api/gateway.php tags: - name: Benefits - name: Goals - name: Time Tracking - name: Time Off - name: Payroll - name: Training - name: Applicant Tracking - name: Time Tracking - Private Beta - name: Tabular Data - name: Webhooks - name: Employee Files - name: Company Files - name: Account Information - name: Hours - name: Employees - name: Reports - name: Photos - name: Last Change Information - name: Login paths: /{companyDomain}/v1/employees/directory: get: tags: - Employees summary: Get Employee Directory operationId: Employees_getDirectory description: Gets employee directory. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: List of employees content: application/json: schema: $ref: '#/components/schemas/EmployeesGetDirectoryResponse' application/xml: schema: $ref: '#/components/schemas/EmployeesGetDirectory200Response' '403': description: if the directory has not been shared company-wide. x-unitTests: - request: method: GET uri: /employees/directory headers: Authorization: Basic {{apiKey}} Accept: application/json Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Get Employees (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/files/categories: post: tags: - Employee Files summary: Add Employee File Category operationId: EmployeeFiles_addCategory description: Add an employee file category. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/PostNewEmployeeFileCategory' required: true responses: '201': description: The category was created '400': description: if the posted XML is invalid or there was no category name given. '403': description: >- if the API user does not have permission to create employee categories. '500': description: there was an unknown server error. x-unitTests: - request: method: POST uri: /employees/files/categories headers: Authorization: Basic {{apiKey}} Accept: application/json Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{id}/files/{fileId}: post: tags: - Employee Files summary: Update Employee File operationId: EmployeeFiles_updateEmployeeFile description: Update an employee file parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- {id} is an employee ID. The special employee ID of zero (0) means to use the employee ID associated with the API key (if any). name: id in: path required: true schema: type: string default: 0 - description: '{fileId} is the ID of the employee file being updated.' name: fileId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/EmployeeFileUpdate' required: true responses: '200': description: The employee file was updated '400': description: Invalid JSON '403': description: >- if the API user does not have permission to see the requested employee or the employee's files. '404': description: if the employee file or category was not found. x-unitTests: - request: method: POST uri: /employees/{id}/files/{fileId} headers: Authorization: Basic {{apiKey}} Accept: application/json Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Employee Files summary: Delete Employee File operationId: EmployeeFiles_removeFile description: Delete an employee file parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- {id} is an employee ID. The special employee ID of zero (0) means to use the employee ID associated with the API key (if any). name: id in: path required: true schema: type: string default: 0 - description: '{fileId} is the ID of the employee file being deleted.' name: fileId in: path required: true schema: type: string responses: '200': description: Employee file was deleted '403': description: >- if the API user does not have permission to see the requested employee or the employee's files. '404': description: if the employee file was not found. x-unitTests: - request: method: POST uri: /employees/{id}/files/{fileId} headers: Authorization: Basic {{apiKey}} Accept: application/json Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false get: tags: - Employee Files summary: Get an Employee File operationId: EmployeeFiles_getEmployeeFile description: Gets an employee file parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- {id} is an employee ID. The special employee ID of zero (0) means to use the employee ID associated with the API key (if any). name: id in: path required: true schema: type: string default: 0 - description: '{fileId} is the ID of the employee file being retrieved.' name: fileId in: path required: true schema: type: string responses: '200': description: Employee file was successfully retrieved '403': description: >- if the API user does not have permission to see the requested employee or the employee's files. '404': description: if the employee file was not found. x-unitTests: - request: method: POST uri: /employees/{id}/files/{fileId} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{id}/files: post: tags: - Employee Files summary: Upload Employee File operationId: EmployeeFiles_uploadFile description: Upload an employee file parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- {id} is an employee ID. The special employee ID of zero (0) means to use the employee ID associated with the API key (if any). name: id in: path required: true schema: type: string default: 0 responses: '201': description: The employee file was successfully uploaded '403': description: >- if the API user does not have permission to see the requested employee or the employee's files. '404': description: if the category ID was not found. '413': description: if the file size exceeds 20MB or the storage limit for the company. x-unitTests: - request: method: POST uri: /employees/{id}/files headers: Authorization: Basic {{apiKey}} Content-Type: multipart/form-data expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/files/categories: post: tags: - Company Files summary: Add Company File Category operationId: CompanyFiles_createCategory description: Add a company file category. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/NewCompanyFileCategory' required: true responses: '201': description: The category was created '400': description: if the posted JSON is invalid or there was no category name given. '403': description: if the API user does not have permission to see the company files. '500': description: there was an unknown server error. x-unitTests: - request: method: POST uri: /files/categories headers: Authorization: Basic {{apiKey}} Accept: application/json Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/files/{fileId}: post: tags: - Company Files summary: Update Company File operationId: CompanyFiles_updateFile description: Update a company file parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{fileId} is the ID of the employee file being updated.' name: fileId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CompanyFileUpdate' required: true responses: '200': description: The employee file was updated '400': description: if the posted JSON is invalid. '403': description: if the API user does not have permission to see the company files. '404': description: if the file or category was not found. x-unitTests: - request: method: POST uri: /files/{fileId} headers: Authorization: Basic {{apiKey}} Accept: application/json Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Company Files summary: Delete Company File operationId: CompanyFiles_removeFile description: Delete a company file parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{fileId} is the ID of the company file being deleted.' name: fileId in: path required: true schema: type: string responses: '200': description: Company file was deleted '403': description: if the API user does not have permission to see the requested file. '404': description: if the file was not found. x-unitTests: - request: method: POST uri: /files/{fileId} headers: Authorization: Basic {{apiKey}} Accept: application/json Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false get: tags: - Company Files summary: Get an Company File operationId: CompanyFiles_getFile description: Gets an company file parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{fileId} is the ID of the company file being retrieved.' name: fileId in: path required: true schema: type: string responses: '200': description: Company file was successfully retrieved '403': description: if the API user does not have permission to see the company files. '404': description: if the file was not found. x-unitTests: - request: method: POST uri: /files/{fileId} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/files: post: tags: - Company Files summary: Upload Company File operationId: CompanyFiles_uploadFile description: Upload a company file parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '201': description: The company file was successfully uploaded '403': description: if the API user does not have permission to see the company files. '404': description: if the category ID was not found. '413': description: if the file size exceeds 20MB or the storage limit for the company. x-unitTests: - request: method: POST uri: /files headers: Authorization: Basic {{apiKey}} Content-Type: multipart/form-data expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/reports/{id}: get: tags: - Reports summary: Get company report operationId: Reports_companyReport description: >- Use this resource to request one of your existing custom company reports from the My Reports or Manage Reports sections in the Reports tab. You can get the report number by hovering over the report name and noting the ID from the URL. At present, only reports from the My Reports or Manage Reports sections are supported. In the future we may implement reports from the Standard Reports section if there is enough demand for it. The report numbers used in this request are different in each company. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is a report ID.' name: id in: path required: true schema: type: string - description: >- The output format for the report. Supported formats: CSV, PDF, XLS, XML, JSON name: format in: query required: true schema: type: string - description: >- yes=apply standard duplicate field filtering, no=return the raw results with no duplicate filtering. Default value is "yes" name: fd in: query required: false schema: type: string - description: >- Setting to false will return future dated values from history table fields. name: onlyCurrent in: query required: false schema: type: boolean default: true responses: '200': description: All fields available in BambooHR. '404': description: if you request a nonexistent report number. x-unitTests: - request: method: GET uri: /reports/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/reports/custom: post: tags: - Reports summary: Request a custom report operationId: Reports_requestCustomReport description: >- Use this resource to request BambooHR generate a report. You must specify a type of either "PDF", "XLS", "CSV", "JSON", or "XML". You must specify a list of fields to show on the report. The list of fields is available here. 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. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- The output format for the report. Supported formats: CSV, PDF, XLS, XML, JSON name: format in: query required: true schema: type: string - description: >- Limits the report to only current employees. Setting to false will include future-dated employees in the report. name: onlyCurrent in: query required: false schema: type: boolean default: true requestBody: content: application/json: schema: $ref: '#/components/schemas/RequestCustomReport' required: true responses: '200': description: Custom report successfully requested x-unitTests: - request: method: POST uri: /files headers: Authorization: Basic {{apiKey}} Content-Type: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{id}/tables/{table}: get: tags: - Tabular Data summary: Gets table rows for a given employee and table combination operationId: TabularData_getEmployeeTableRows description: >- Returns a data structure representing all the table rows for a given employee and table combination. The result is not sorted in any particular order. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee ID.' name: id in: path required: true schema: type: string - description: Table name name: table in: path required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /employees/{id}/tables/{table} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Tabular Data summary: Adds a table row operationId: TabularData_addTableRow description: >- Adds a table row. If employee is currently on a pay schedule syncing with Trax Payroll, or being added to one, the row cannot be added if they are missing any required fields for that table. If the API user is adding a row on the compensation table, the row cannot be added if they are missing any of the required employee fields (including fields not on that table). parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee ID.' name: id in: path required: true schema: type: string - description: Table name name: table in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/TableRowUpdate' responses: '200': description: Row added successfully. '400': description: Invalid or missing required fields. '403': description: Permission denied. '406': description: An error with one or more of the fields. x-unitTests: - request: method: POST uri: /employees/{id}/tables/{table} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{id}/tables/{table}/{rowId}: post: tags: - Tabular Data summary: Updates a table row. operationId: TabularData_updateRow description: >- Updates a table row. If employee is currently on a pay schedule syncing with Trax Payroll, or being added to one, the row cannot be added if they are missing any required fields for that table. If the API user is updating a row on the compensation table, the row cannot be updated if they are missing any of the required employee fields (including fields not on that table). parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee ID.' name: id in: path required: true schema: type: string - description: Table name name: table in: path required: true schema: type: string - description: Row ID name: rowId in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/TableRowUpdate' responses: '200': description: >- A successful response is possible even if one or more updates were dis-allowed because of permissions. As long as a single field is updated a 200 response will be returned. '400': description: Invalid or missing required fields. '403': description: Permission denied. '406': description: An error with one or more of the fields. x-unitTests: - request: method: POST uri: /employees/{id}/tables/{table}/{rowId} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Tabular Data summary: Deletes a table row operationId: TabularData_deleteRow description: Deletes a table row parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee ID.' name: id in: path required: true schema: type: string - description: Table name name: table in: path required: true schema: type: string - description: Row ID name: rowId in: path required: true schema: type: string responses: '200': description: Respond true if the row was deleted, false if the row was not found. content: application/json: schema: $ref: '#/components/schemas/TabularDataDeleteRowResponse' '400': description: Bad request. Invalid employee ID or table name. '401': description: Unauthorized. '403': description: Permission denied. x-unitTests: - request: method: DELETE uri: /employees/{id}/tables/{table}/{rowId} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: Delete Table Row x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1_1/employees/{id}/tables/{table}/{rowId}: post: tags: - Tabular Data summary: Updates a table row. operationId: TabularData_updateRow description: >- Updates a table row. Fundamentally the same as version 1 so choose a version and stay with it unless other changes occur. Changes from version 1 are now minor with a few variations limited to ACA, payroll, terminated rehire, gusto, benetrac, and final pay date. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee ID.' name: id in: path required: true schema: type: string - description: Table name name: table in: path required: true schema: type: string - description: Row ID name: rowId in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/TableRowUpdate' responses: '200': description: >- A successful response is possible even if one or more updates were dis-allowed because of permissions. As long as a single field is updated a 200 response will be returned. '400': description: Invalid or missing required fields. '403': description: Permission denied. '406': description: An error with one or more of the fields. x-unitTests: - request: method: POST uri: /employees/{id}/tables/{table}/{rowId} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1_1/employees/{id}/tables/{table}: post: tags: - Tabular Data summary: Adds a table row operationId: TabularData_addRow description: >- Adds a table row. Fundamentally the same as version 1 so choose a version and stay with it unless other changes occur. Changes from version 1 are now minor with a few variations limited to ACA, payroll, terminated rehire, gusto, benetrac, and final pay date. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee ID.' name: id in: path required: true schema: type: string - description: Table name name: table in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/TableRowUpdate' responses: '200': description: '' x-unitTests: - request: method: POST uri: /employees/{id}/tables/{table} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/changed/tables/{table}: get: tags: - Tabular Data summary: Gets all updated employee table data operationId: TabularData_getChangedTableRows description: >- This API is merely an optimization to avoid downloading all table data for all employees. When you use this API you will provide a timestamp and the results will be limited to just the employees that have changed since the time you provided. This API operates on an employee-last-changed-timestamp, which means that a change in ANY field in the employee record will cause ALL of that employees table rows to show up via this API. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: Table name name: table in: path required: true schema: type: string - description: URL encoded iso8601 timestamp name: since in: query required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: POST uri: /employees/changed/tables/{table} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/meta/lists/{listFieldId}: put: tags: - Account Information summary: Add or Update Values for List Fields operationId: AccountInformation_updateListFieldValues description: >- This resource accepts one or more options. To update an option, specify an ID. You may also remove an option from the list of current values by archiving the value. To create a new option, do not specify an "id" attribute. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '' name: listFieldId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ListFieldValues' required: true responses: '200': description: >- A successful response indicates that all the requested changes were made. The content of the response will be the full list of options for the specified listId. '400': description: The posted JSON is invalid. '403': description: List is not editable or insufficient permissions. '404': description: A non-existant list value or option ID is specified. '409': description: A duplicate list value conflicted with the value specified. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{employeeId}/time_off/request: put: tags: - Time Off summary: Add a Time Off Request operationId: TimeOff_requestCreation description: >- A time off request is an entity that describes the decision making process for approving time off. Once a request has been created, a history entry can be created documenting the actual use of time off. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '' name: employeeId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeOffRequest' required: true responses: '201': description: Request created. '400': description: Malformed request. '403': description: Forbidden. Cannot change past approved requests. '404': description: Employee not found x-unitTests: - request: method: PUT uri: /employees/{employeeId}/time_off/request headers: Authorization: Basic {{apiKey}} Content-Type: text/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Add a Time Off Request' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_off/requests/{requestId}/status: put: tags: - Time Off summary: Change a Request Status operationId: TimeOff_changeRequestStatus description: >- This endpoint allows you to change the status of a request in the system. You can use this to approve, deny, or cancel a time off request. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '' name: requestId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/request' required: true responses: '200': description: The status has been updated. '400': description: >- If the posted XML is invalid or the status is not "approved", "denied", "canceled", or "declined". '403': description: >- If the current user doesn't have access to change the status in this way. '404': description: If the time off request ID doesn't exist. x-unitTests: - request: method: PUT uri: /time_off/requests/{timeOffRequestId}/status headers: Authorization: Basic {{apiKey}} Content-Type: text/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Change a Request Status' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{employeeId}/time_off/policies: get: tags: - Time Off summary: List Time Off Policies for Employee operationId: TimeOff_listEmployeeTimeOffPolicies description: '' parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '' name: employeeId in: path required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /employees{employeeId}/time_off/policies headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: List Time Off Policies for Employee' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false put: tags: - Time Off summary: Assign Time Off Policies for an Employee operationId: TimeOff_assignEmployeePolicies description: >- To use this API make an HTTP PUT where the body of the request is the JSON documented below. A time off policy will be assigned to the employee with accruals starting on the date specified. A null start date will remove the assignment. On success, a 200 Success code is returned and the content of the response will be the same as the List Time off Policies API. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '' name: employeeId in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/TimeOffPolicies' responses: '200': description: '' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1_1/employees/{employeeId}/time_off/policies: get: tags: - Time Off summary: List Time Off Policies for Employee, Version 1.1 operationId: TimeOff_listEmployeePolicies description: '' parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '' name: employeeId in: path required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /employees{employeeId}/time_off/policies headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: List Time Off Policies for Employee' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false put: tags: - Time Off summary: Assign Time Off Policies for an Employee, Version 1.1 operationId: TimeOff_assignEmployeePoliciesV11 description: >- To use this API make an HTTP PUT where the body of the request is the JSON documented below. A time off policy will be assigned to the employee with accruals starting on the date specified. On success, a 200 Success code is returned and the content of the response will be the same as the List Time off Policies API. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '' name: employeeId in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/TimeOffPolicies' responses: '200': description: '' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{employeeId}/time_off/calculator: get: tags: - Time Off summary: Estimate Future Time Off Balances operationId: TimeOff_estimateFutureTimeOffBalances description: >- This endpoint will sum future time off accruals, scheduled time off, and carry-over events to produce estimates for the anticipated time off balance on a given date in the future. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '' name: end in: query required: true schema: type: string format: date-time - description: '' name: employeeId in: path required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /employees/{{employeeId}}/time_off/calculator?end=2017-12-01 headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Estimate Future Time Off Balances' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{employeeId}/photo/{size}: get: tags: - Photos summary: Get an employee photo operationId: Photos_getEmployeePhoto description: Get an employee photo parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID for the employee you are getting the photo for. name: employeeId in: path required: true schema: type: string - description: Photo size name: size in: path required: true schema: type: string enum: - original - large - medium - xs - tiny responses: '200': description: '' x-unitTests: - request: method: GET uri: /employees/{employeeId}/photo/small headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{employeeId}/photo: post: tags: - Photos summary: Store a new employee photo operationId: Photos_storeNewEmployeePhoto description: Store a new employee photo parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID for the employee you are setting the photo for. name: employeeId in: path required: true schema: type: string responses: '201': description: The file was successfully uploaded '404': description: if the employee doesn't exist '413': description: if the file is too big. '415': description: >- if the file is not in a supported file format or if the width doesn't match the height. x-unitTests: - request: method: POST uri: /files headers: Authorization: Basic {{apiKey}} Content-Type: multipart/form-data expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/changed: get: tags: - Last Change Information summary: Gets all updated employee IDs operationId: LastChangeInformation_getChangedEmployeeIds description: >- This API allows for efficient syncing of employee data. When you use this API you will provide a timestamp and the results will be limited to just the employees that have changed since the time you provided. This API operates on an employee-last-changed-timestamp, which means that a change in ANY individual field in the employee record, as well as any change to the employment status, job info, or compensation tables, will cause that employee to be returned via this API. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: URL encoded iso8601 timestamp name: since in: query required: true schema: type: string - description: >- Use one of these in the {type} variable in the URL: "inserted", "updated", "deleted" name: type in: query required: false schema: type: string responses: '200': description: '' x-unitTests: - request: method: POST uri: /employees/changed headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/login: post: tags: - Login summary: User Login operationId: Login_userCredentials description: User Login parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Login' required: true responses: '200': description: '' x-unitTests: - request: method: POST uri: /employees/{id}/tables/{table} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefits/settings/deduction_types/all: get: tags: - Benefits summary: Get benefit deduction types operationId: Benefits_getDeductionTypesAll description: Get benefit deduction types parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /benefits/settings/deduction_types/all headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefit/company_benefit: get: tags: - Benefits summary: Get a list of company benefits operationId: Benefits_listCompanyBenefits description: Get a list of company benefits parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: List of company benefits. content: application/json: schema: $ref: '#/components/schemas/BenefitsListCompanyBenefitsResponse' x-unitTests: - request: method: GET uri: /benefit/company_benefit headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'HE: Get List of benefit deductions' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Benefits summary: Add a new company benefit operationId: Benefits_addNewCompanyBenefit description: Add a new company benefit parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BenefitsAddNewCompanyBenefitRequest' required: true responses: '200': description: The newly created company benefit. content: application/json: schema: $ref: '#/components/schemas/CompanyBenefitResponse' x-unitTests: - request: method: POST uri: /benefit/company_benefit headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'HE: Add New Company Benefit' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefit/company_benefit/{id}: get: tags: - Benefits summary: Get a company benefit operationId: Benefits_getCompanyBenefit description: Get a company benefit parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the company benefit ID.' name: id in: path required: true schema: type: string responses: '200': description: The requested company benefit. content: application/json: schema: $ref: '#/components/schemas/CompanyBenefitResponse' x-unitTests: - request: method: GET uri: /benefit/company_benefit/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'HE: Get a Company Benefit' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false put: tags: - Benefits summary: Update a company benefit operationId: Benefits_updateCompanyBenefit description: Update a company benefit parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the company benefit ID.' name: id in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BenefitsUpdateCompanyBenefitRequest' required: true responses: '200': description: The updated company benefit. content: application/json: schema: $ref: '#/components/schemas/CompanyBenefitResponse' x-unitTests: - request: method: PUT uri: /benefit/company_benefit/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'HE: Update a Company Benefit' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Benefits summary: Delete a company benefit operationId: Benefits_deleteCompanyBenefit description: Delete a company benefit parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the company benefit ID.' name: id in: path required: true schema: type: string responses: '204': description: Successfully deleted company benefit. x-unitTests: - request: method: DELETE uri: /benefit/company_benefit/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'HE: Delete a Company Benefit' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefit/company_benefit/type: get: tags: - Benefits summary: Get a list of company benefit types operationId: Benefits_listCompanyBenefitTypes description: Get a list of company benefit types parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: List of company benefit types. content: application/json: schema: $ref: '#/components/schemas/BenefitsListCompanyBenefitTypesResponse' x-unitTests: - request: method: GET uri: /benefit/company_benefit/type headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'HE: Get a list of Company Benefit Types' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefit/employee_benefit: get: tags: - Benefits summary: Get a list of employee benefits operationId: Benefits_listEmployeeBenefits description: Get a list of employee benefits parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: description: Employee Benefit Filters content: application/json: schema: $ref: '#/components/schemas/EmployeeBenefitFilters' responses: '200': description: List of employee benefits. content: application/json: schema: $ref: '#/components/schemas/BenefitsListEmployeeBenefitsResponse' x-unitTests: - request: method: GET uri: /benefit/employee_benefit headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'HE: Get a list of Employee Benefits' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Benefits summary: Add an employee benefit operationId: Benefits_addEmployeeBenefit description: Add an employee benefit parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: description: Employee Benefit content: application/json: schema: $ref: '#/components/schemas/BenefitsAddEmployeeBenefitRequest' required: true responses: '200': description: Employee benefit created x-unitTests: - request: method: POST uri: /benefit/employee_benefit headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'HE: Add an Employee Benefit' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefitcoverages: get: tags: - Benefits summary: Get benefit coverages operationId: Benefits_getCoverages description: Get benefit coverages parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /benefitcoverages headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employeedependents/{id}: get: tags: - Benefits summary: Get employee dependent operationId: Benefits_getEmployeeDependent description: Get employee dependent parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee dependent ID.' name: id in: path required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /employeedependents/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false put: tags: - Benefits summary: Update an employee dependent operationId: Benefits_updateDependentInformation description: This API allows you to change the information for a given dependent ID. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee dependent ID.' name: id in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/EmployeeDependent' responses: '201': description: Dependent updated '400': description: if the posted JSON is invalid '403': description: >- if the current user doesn't have access to change the dependent in this way. '500': description: Server error. x-unitTests: - request: method: PUT uri: /employeedependents/{id} headers: Authorization: Basic {{apiKey}} Content-Type: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Add a Time Off Request' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employeedependents: get: tags: - Benefits summary: Get all employee dependents operationId: Benefits_listEmployeeDependents description: Get all employee dependents parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- {employeeid} is the employee ID. Supplying this ID limits the response to the specific employee. name: employeeid in: query required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /employeedependents headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Benefits summary: Add an employee dependent operationId: Benefits_createEmployeeDependent description: Adds an employee dependent parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: $ref: '#/components/requestBodies/EmployeeDependent' responses: '200': description: Dependent added '400': description: if the posted JSON is invalid '403': description: if the current user doesn't have access to add the dependent. '500': description: Server error. x-unitTests: - request: method: PUT uri: employeedependents headers: Authorization: Basic {{apiKey}} Content-Type: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Add a Time Off Request' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefitplans: get: tags: - Benefits summary: Get benefit plans operationId: Benefits_getBenefitPlans description: Get benefit plans parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /benefitplans/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefitplancoverages: get: tags: - Benefits summary: Get benefit plan coverages operationId: Benefits_listBenefitPlanCoverages description: Get benefit plan coverages parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /benefitplancoverages/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefitgroups: get: tags: - Benefits summary: Get benefit groups operationId: Benefits_getBenefitGroups description: Get benefit groups parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /benefitgroups headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefitgroupemployees: get: tags: - Benefits summary: Get benefit group employees operationId: Benefits_getBenefitGroupEmployees description: Get benefit group employees parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /benefitgroupemployees headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Benefits summary: Add a benefit group employee operationId: Benefits_addBenefitGroupEmployee description: Add a benefit group employee parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/BenefitGroupEmployee' required: true responses: '200': description: Benefit group employee added '400': description: if the posted JSON is invalid '403': description: >- if the current user doesn't have access to add the benefit group employee. '500': description: Server error. x-unitTests: - request: method: POST uri: /benefitgroupemployees headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefitgroupplans: get: tags: - Benefits summary: Get benefit group plans operationId: Benefits_getGroupPlans description: Get benefit group plans parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /benefitgroupplans headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/benefitgroupplancosts: get: tags: - Benefits summary: Get benefit group plan costs operationId: Benefits_getGroupPlanCosts description: Get benefit group plan costs parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /benefitgroupplancosts headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employee/deductions/{id}: get: tags: - Benefits summary: Get employee deductions by benefit plan operationId: Benefits_getDeductionsByPlan description: Get employee deductions by benefit plan parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the benefit plan ID.' name: id in: path required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /employee/deductions/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employee/plans/{id}: get: tags: - Benefits summary: Get benefit plan deductions by employee operationId: Benefits_getBenefitPlanDeductionsByEmployee description: Get benefit plan deductions by employee parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee ID.' name: id in: path required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /employee/plans/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/payroll/deductions/{id}: get: tags: - Benefits summary: Get benefit deductions for employee operationId: Benefits_getEmployeeBenefitDeductions description: Get benefit deductions for employee parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee ID.' name: id in: path required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /payroll/deductions/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employee_withholding/{id}: get: tags: - Payroll summary: Get an employee's default withholdings operationId: Payroll_getDefaultWithholdings description: Get an employee's default withholdings parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee.' name: id in: path required: true schema: type: string responses: '200': description: >- The response content will be a JSON document with the requested information. '400': description: Invalid employee ID is provided x-unitTests: - request: method: GET uri: /employee_withholding/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Payroll summary: Add an employee's default withholdings operationId: Payroll_addEmployeeWithholdings description: Add an employee's default withholdings parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee id.' name: id in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/EmployeeWithholding' required: true responses: '200': description: Withholding added '400': description: >- if an invalid employee ID is provided, or the posted JSON is not valid. '403': description: >- if the current user doesn't have access to add employee withholdings information. x-unitTests: - request: method: POST uri: /employee_withholding/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Payroll summary: Clear an employee's default withholdings operationId: Payroll_clearEmployeeWithholdings description: Clear an employee's default withholdings parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee id.' name: id in: path required: true schema: type: string responses: '200': description: The response content will be a JSON success document. '400': description: Invalid employee ID is provided '403': description: >- if the API user doesn't have access to edit the employee withholdings information. x-unitTests: - request: method: DELETE uri: /employee_withholding/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employee_direct_deposit_accounts/{id}: get: tags: - Payroll summary: Get an employee's direct deposit information operationId: Payroll_employeeDirectDepositInfo description: Get an employee's direct deposit information parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee.' name: id in: path required: true schema: type: string responses: '200': description: >- The response content will be a JSON document with the requested information. '400': description: Invalid employee ID is provided x-unitTests: - request: method: GET uri: /employee_direct_deposit_account/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Payroll summary: Add an employee's direct deposit information operationId: Payroll_addEmployeeDirectDepositInfo description: Add an employee's direct deposit information parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee id.' name: id in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/EmployeeDeposit' required: true responses: '200': description: >- The saved values for the employee's direct deposit declarations will be returned in JSON. '400': description: >- if an invalid employee ID is provided, or the posted JSON is not valid. '403': description: >- if the current user doesn't have access to update the employee's direct deposit declarations. x-unitTests: - request: method: POST uri: /employee_direct_deposit_account/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Payroll summary: Clear an employee's direct deposit information operationId: Payroll_clearEmployeeDirectDeposit description: Clear an employee's direct deposit information parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee ID.' name: id in: path required: true schema: type: string responses: '200': description: The response content will be a JSON success document. '400': description: Invalid employee ID is provided '403': description: >- if the API user doesn't have access to edit the employee's direct deposit declarations. x-unitTests: - request: method: DELETE uri: /employee_direct_deposit_account/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employee_unpaid_pay_stubs/{id}: get: tags: - Payroll summary: Get an employee's unpaid paystubs operationId: Payroll_getUnpaidPaystubs description: Get an employee's unpaid paystubs parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee.' name: id in: path required: true schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /employee_unpaid_pay_stubs/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Payroll summary: Clear an employee's unpaid paystubs operationId: Payroll_clearEmployeeUnpaidPaystubs description: Clear an employee's unpaid paystubs parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the employee id.' name: id in: path required: true schema: type: string responses: '200': description: Unpaid paystub cleared '400': $ref: '#/components/responses/400' '403': $ref: '#/components/responses/403' x-unitTests: - request: method: DELETE uri: /employee_unpaid_pay_stubs/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employee_unpaid_pay_stubs: post: tags: - Payroll summary: Add an employee's unpaid paystubs operationId: Payroll_addEmployeeUnpaidPaystubs description: Add an employee's unpaid paystubs parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/EmployeeUnpaidPaystub' required: true responses: '200': description: >- Additionally, the saved values for the employee's unpaid pay stubs will be returned in JSON. '400': description: >- if an invalid employee ID is provided, or the posted JSON is not valid. '403': description: >- if the current user doesn't have access to add employee unpaid pay stub information. x-unitTests: - request: method: POST uri: /employee_unpaid_pay_stubs headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employee_pay_stub/{id}: get: tags: - Payroll summary: Get an employee's paystub operationId: Payroll_getPaystub description: Get an employee's paystub parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the paystub (record) ID.' name: id in: path required: true schema: type: string responses: '200': description: >- The response content will be a JSON document with the requested information. '400': description: Invalid employee ID is provided x-unitTests: - request: method: GET uri: /employee_pay_stub/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Payroll summary: Delete an employee's paystub operationId: Payroll_deleteEmployeePaystub description: Delete an employee's paystub parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the paystub (record) ID.' name: id in: path required: true schema: type: string responses: '200': description: The response content will be a JSON success document. '400': description: Invalid employee ID is provided '403': description: >- if the API user doesn't have access to edit the employee unpaid paystub information. x-unitTests: - request: method: DELETE uri: /employee_pay_stub/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employee_pay_stub: post: tags: - Payroll summary: Add an employee's paystub operationId: Payroll_addEmployeePaystub description: Add an employee's paystub parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/EmployeePaystub' required: true responses: '200': description: >- Additionally, the saved values for the employee's paystub record will be returned in JSON along with its record ID. '400': description: >- if an invalid employee ID is provided, or the posted JSON is not valid. '403': description: if the current user doesn't have access to add an employee pay stub. x-unitTests: - request: method: POST uri: /employee_pay_stub headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/timetracking/record/{id}: get: tags: - Hours summary: Get an hour record operationId: Hours_getHourRecord description: Get an hour record parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is the time tracking ID used to originally create the record.' name: id in: path required: true schema: type: string responses: '200': description: >- The response content will be a JSON document with the requested information. '400': description: Invalid or missing argument. '500': description: Server error. x-unitTests: - request: method: GET uri: /timetracking/record/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/timetracking/add: post: tags: - Hours summary: Add an hour record operationId: Hours_recordAddition description: Add an hour record parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeTrackingRecord' required: true responses: '201': description: The time tracking ID will be returned in JSON. '400': description: >- If any required field is missing, any of the IDs are invalid, or the posted JSON is not valid. x-unitTests: - request: method: POST uri: /timetracking/add headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/timetracking/adjust: put: tags: - Hours summary: Edit an hour record operationId: Hours_editHourRecord description: Edit an hour record parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/HoursEditHourRecordRequest' required: true responses: '201': description: The time tracking ID will be returned in JSON. '400': description: >- if any required field is missing, any of the IDs are invalid, or the posted JSON is not valid x-unitTests: - request: method: PUT uri: /timetracking/adjust headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/timetracking/delete/{id}: delete: tags: - Hours summary: Delete an hour record operationId: Hours_deleteHourRecord description: Delete an hour record parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- The time tracking id is the id that was used to track the record up to 36 characters in length. (i.e. UUID). name: id in: path required: true schema: type: string responses: '201': description: Record removed. '400': description: If the time tracking ID cannot be found. x-unitTests: - request: method: DELETE uri: /timetracking/delete/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/timetracking/record: post: tags: - Hours summary: Bulk add/edit hour records operationId: Hours_bulkRecordEdit description: Bulk add/edit hour records parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeTrackingRecordBulk' required: true responses: '201': description: >- An array of objects with success as true or false depending on the success of each time tracking object in the request along with the successful IDs or the reason of the error. x-unitTests: - request: method: POST uri: /timetracking/record headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/timesheets/approve: post: tags: - Time Tracking summary: Approve employee timesheets operationId: TimeTracking_approveEmployeeTimesheets description: Approve employee timesheets parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingApproveEmployeeTimesheetsRequest required: true responses: '204': description: Successful approval will return a 204 - No content response. '403': description: Missing time tracking tool or permissions to approve. '404': description: Invalid timesheet id. '409': description: Stale data or employee clocked in. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: POST uri: /time_tracking/timesheets/approve headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Approve timesheets' x-testDescription: Approve timesheets x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/timesheets/clock_out_and_approve: post: tags: - Time Tracking summary: Approve timesheets for employees that are currently clocked in operationId: TimeTracking_approveEmployeeTimesheets description: Approve timesheets for employees that are currently clocked in parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingApproveEmployeeTimesheetsRequest1 required: true responses: '204': description: Successful approval will return a 204 - No content response. '400': description: Invalid or missing argument '403': description: Missing time tracking tool or permissions to approve. '404': description: Invalid timesheet id. '409': description: Stale data or employee clocked in. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: POST uri: /time_tracking/timesheets/clock_out_and_approve headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Clock out and approve timesheets' x-testDescription: Clock out and approve timesheets x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/timesheets: get: tags: - Time Tracking summary: Get timesheets by ids operationId: TimeTracking_getTimesheetsByIds description: Get timesheets by ids parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeTrackingGetTimesheetsByIdsRequest' required: true responses: '200': description: The response content will be JSON with the requested information. '400': description: No timesheet ids given. '403': description: Missing permissions to view all or some of the timesheets. '404': description: Timesheet not found. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: GET uri: /time_tracking/timesheets headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Get timesheets' x-testDescription: Get timesheets x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/clock_in/{employeeId}: post: tags: - Time Tracking summary: Clock in (employee id optional) operationId: TimeTracking_clockInEmployee description: Clock in (employee id optional) parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{employeeId} is id of the employee clocking out' name: employeeId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeTrackingClockInEmployeeRequest' responses: '200': description: The response content will be JSON with the clock in information. '400': description: Invalid information passed in. '403': description: Most likely because of missing permissions to clock in. '404': description: Id not found. '409': description: Employee already clocked in or invalid timesheet type. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: POST uri: /time_tracking/clock_in/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Clock in' x-testDescription: Clock in x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/clock_out/{employeeId}: post: tags: - Time Tracking summary: Clock out (employee id optional) operationId: TimeTracking_clockOutEmployee description: Clock out (employee id optional) parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{employeeId} is id of the employee clocking out' name: employeeId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeTrackingClockOutEmployeeRequest' responses: '200': description: The response content will be JSON with the clock out information. '400': description: Invalid information passed in. '403': description: Most likely because of missing permissions to clock out. '404': description: Id not found. '409': description: Employee already clocked in or invalid timesheet type. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: POST uri: /time_tracking/clock_out/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Clock out' x-testDescription: Clock out x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/daily_entries: post: tags: - Time Tracking summary: Store daily entries operationId: TimeTracking_storeDailyEntries description: Store daily entries parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeTrackingStoreDailyEntriesRequest' responses: '200': description: The response content will be JSON with the daily entry information. '400': description: Invalid information passed in. '403': description: Missing permissions. '404': description: Id not found. '409': description: Invalid timesheet type. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: POST uri: /time_tracking/daily_entries headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Store daily entries' x-testDescription: Store daily entries x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/clock_entries: post: tags: - Time Tracking summary: Store clock entries operationId: TimeTracking_storeClockEntries description: Store clock entries parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeTrackingStoreClockEntriesRequest' responses: '200': description: The response content will be JSON with the daily entry information. '400': description: Invalid information passed in. '403': description: Missing permissions. '404': description: Id not found. '409': description: Invalid timesheet type or overlapping time entries. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: POST uri: /time_tracking/clock_entries headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Store clock entries' x-testDescription: Store clock entries x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Time Tracking summary: Delete clock entries operationId: TimeTracking_deleteClockEntries description: Delete clock entries parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeTrackingDeleteClockEntriesRequest' required: true responses: '204': description: Successful deletion will return a 204 - No content response. '400': description: Invalid information passed in. '403': description: Missing permissions or timesheet already approved. '404': description: Id not found. '409': description: >- If clock timesheet, may still be clocked in. Have to clock out first. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: DELETE uri: /time_tracking/clock_entries headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Delete clock entries' x-testDescription: Delete clock entries x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employee/{employeeId}/timesheet/{timesheetId}: get: tags: - Time Tracking summary: Get a timesheet for an employee operationId: TimeTracking_employeeTimesheetGet description: Get a timesheet for an employee parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of employee to whom the timesheet belongs. name: employeeId in: path required: true schema: type: string - description: timesheetId is the id to whom the timesheet belongs. name: timesheetId in: path required: true schema: type: string responses: '200': description: The response content will be JSON with the timesheet information. '400': description: Invalid information passed in. '403': description: Missing permissions. '404': description: Id not found. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: GET uri: /time_tracking/employee/{employeeId}/timesheet/{timesheetId} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Get employee timesheet' x-testDescription: Get employee timesheet x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employee/{employeeId}/daily_entries/{id}: get: tags: - Time Tracking summary: Get a daily entry operationId: TimeTracking_getDailyEntry description: Get a daily entry parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of employee to whom the daily entry belongs. name: employeeId in: path required: true schema: type: string - description: the id to whom the daily entry belongs. name: id in: path required: true schema: type: string responses: '200': description: The response content will be JSON with the daily entry information. '400': description: Invalid information passed in. '403': description: Missing permissions. '404': description: Id not found. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: GET uri: /time_tracking/employee/{employeeId}/daily_entries/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Get a daily entry' x-testDescription: Get a daily entry x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employee/{employeeId}/clock_entries/{id}: get: tags: - Time Tracking summary: Get a clock entry operationId: TimeTracking_getClockEntry description: Get a clock entry parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of employee to whom the clock entry belongs. name: employeeId in: path required: true schema: type: string - description: the id to whom the clock entry belongs. name: id in: path required: true schema: type: string responses: '200': description: The response content will be JSON with the daily entry information. '403': description: Missing permissions. '404': description: Id not found. '500': description: Server error. x-unitTests: - request: method: GET uri: /time_tracking/employee/{employeeId}/clock_entries/{id} headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Get a clock entry' x-testDescription: Get a clock entry x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employee/{employeeId}/is_clocked_in: get: tags: - Time Tracking summary: Is employee clocked in? operationId: TimeTracking_employeeClockedIn description: Is employee clocked in? parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of employee to whom the clock entry belongs. name: employeeId in: path required: true schema: type: string responses: '200': description: The response content will be JSON with the daily entry information. '403': description: Missing permissions. '500': description: Server error. x-unitTests: - request: method: GET uri: /time_tracking/employee/{employeeId}/is_clocked_in headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Is employee clocked in?' x-testDescription: Is employee clocked in? x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employee/{employeeId}/clock_out/datetime: post: tags: - Time Tracking summary: Clock out an employee at a specific time operationId: TimeTracking_clockOutEmployeeAtSpecificTime description: Clock out an employee at a specific time parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of the employee to whom the projects belong. name: employeeId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingClockOutEmployeeAtSpecificTimeRequest responses: '200': description: The response content will be JSON with the daily entry information. '400': description: Invalid information passed in. '403': description: Missing permissions. '404': description: Id not found. '412': description: Invalid company configuration or timezone. '500': description: Server error. x-unitTests: - request: method: POST uri: /time_tracking/employee/{employeeId}/clock_out/datetime headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Clock out employee at specific time' x-testDescription: Clock out employee at specific time x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employee/{employeeId}/clock_in/data: post: tags: - Time Tracking summary: Edit information on the currently clocked in entry operationId: TimeTracking_editClockedInEntryData description: Edit information on the currently clocked in entry parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of the employee to whom the projects belong. name: employeeId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeTrackingEditClockedInEntryDataRequest' responses: '200': description: The response content will be JSON with the daily entry information. '400': description: Invalid or missing argument. '403': description: Invalid permissions. '404': description: Not found. '409': description: Conflict found. '412': description: Precondition failed. '500': description: Server error. x-unitTests: - request: method: POST uri: /time_tracking/employee/{employeeId}/clock_in/data headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Tracking: Edit information on the currently clocked in entry' x-testDescription: Edit information on the currently clocked in entry x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employee/{employeeId}/projects: get: tags: - Time Tracking summary: Get projects an employee can log time to operationId: TimeTracking_listEmployeeProjects description: Get projects an employee can log time to parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of the employee to whom the projects belong. name: employeeId in: path required: true schema: type: string responses: '200': description: The response content will be JSON with the daily entry information. '500': description: Server error. x-unitTests: - request: method: GET uri: /time_tracking/employee/{employeeId}/projects headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: Time Tracking:Get projects an employee can log time to x-testDescription: Get projects an employee can log time to x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employee/{employeeId}/projects/{projectId}/tasks: get: tags: - Time Tracking summary: Get tasks for a project operationId: TimeTracking_getProjectTasks description: Get tasks for a project parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of the employee to whom the projects belong. name: employeeId in: path required: true schema: type: string - description: id of the project to which the tasks belong. name: projectId in: path required: true schema: type: string responses: '200': description: The response content will be JSON with the task information. '403': description: Invalid permissions. '500': description: Server error. x-unitTests: - request: method: GET uri: /time_tracking/employee/{employeeId}/projects/{projectId}/tasks headers: Authorization: Basic {{apiKey}} expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: Time Tracking:Get tasks for a project x-testDescription: Get tasks for a project x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/timesheet_entries: get: tags: - Time Tracking - Private Beta summary: Get Timesheet Entries operationId: TimeTrackingPrivateBeta_listTimesheetEntries description: Get all timesheet entries for a given period of time. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- YYYY-MM-DD. Only show timesheet entries on/after the specified start date. Must be within the last 365 days. name: start in: query required: true schema: type: string - description: >- YYYY-MM-DD. Only show timesheet entries on/before the specified end date. Must be within the last 365 days. name: end in: query required: true schema: type: string - description: >- A comma separated list of employee IDs. When specified, only entries that match these employee IDs are returned. name: employeeIds in: query schema: type: string responses: '200': description: Success. content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaListTimesheetEntriesResponse '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/clock_entries/store: post: tags: - Time Tracking - Private Beta summary: Add/Edit Timesheet Clock Entries operationId: TimeTrackingPrivateBeta_addEditClockEntries description: Add or edit timesheet clock entries. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaAddEditClockEntriesRequest responses: '201': description: Success. content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaAddEditClockEntriesResponse '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: >- Forbidden. Insufficient user permissions or API access is not turned on. '406': description: Request not acceptable. '409': description: There was a conflict with the request. '500': description: Internal server error. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/clock_entries/delete: post: tags: - Time Tracking - Private Beta summary: Delete Timesheet Clock Entries operationId: TimeTrackingPrivateBeta_deleteTimeSheetEntries description: Delete timesheet clock entries. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaDeleteTimeSheetEntriesRequest responses: '204': description: Success. No content returned. '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: >- Forbidden. Insufficient user permissions or API access is not turned on. '406': description: Request not acceptable. '409': description: There was a conflict with the request. '412': description: Invalid time tracking configuration or timezone. '500': description: Internal server error. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/hour_entries/store: post: tags: - Time Tracking - Private Beta summary: Add/Edit Timesheet Hour Entries operationId: TimeTrackingPrivateBeta_addEditHourEntries description: Add or edit timesheet hour entries. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaAddEditHourEntriesRequest responses: '201': description: Success. content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaAddEditHourEntriesResponse '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: >- Forbidden. Insufficient user permissions or API access is not turned on. '406': description: Request not acceptable. '409': description: There was a conflict with the request. '500': description: Internal server error. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/hour_entries/delete: post: tags: - Time Tracking - Private Beta summary: Delete Timesheet Hour Entries operationId: TimeTrackingPrivateBeta_deleteHourEntries description: Delete timesheet hour entries. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaDeleteHourEntriesRequest responses: '204': description: Success. No content returned. '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: >- Forbidden. Insufficient user permissions or API access is not turned on. '406': description: Request not acceptable. '409': description: There was a conflict with the request. '412': description: Invalid time tracking configuration or timezone. '500': description: Internal server error. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employees/{employeeId}/clock_in: post: tags: - Time Tracking - Private Beta summary: Add Timesheet Clock-In Entry operationId: TimeTrackingPrivateBeta_addTimesheetClockIn description: Clock in an employee. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of the employee to clock in. name: employeeId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaAddTimesheetClockInRequest responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/TimesheetEntry' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: >- Forbidden. Insufficient user permissions or API access is not turned on. '406': description: Request not acceptable. '409': description: There was a conflict with the request. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employees/{employeeId}/clock_out: post: tags: - Time Tracking - Private Beta summary: Add Timesheet Clock-Out Entry operationId: TimeTrackingPrivateBeta_addClockOut description: Clock out an employee. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of the employee to clock out. name: employeeId in: path required: true schema: type: string responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/TimesheetEntry' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: >- Forbidden. Insufficient user permissions or API access is not turned on. '406': description: Request not acceptable. '409': description: There was a conflict with the request. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/employees/{employeeId}/projects: get: tags: - Time Tracking - Private Beta summary: Get Employee Projects operationId: TimeTrackingPrivateBeta_listEmployeeProjects description: Get the projects an employee can track time for. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: id of the employee to retrieve projects for. name: employeeId in: path required: true schema: type: string responses: '200': description: Success. content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaListEmployeeProjectsResponse '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_tracking/projects: post: tags: - Time Tracking - Private Beta summary: Create a Time Tracking Project operationId: TimeTrackingPrivateBeta_createProjectTask description: Create a time tracking project with optional tasks. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingPrivateBetaCreateProjectTaskRequest responses: '201': description: Success. content: application/json: schema: $ref: >- #/components/schemas/TimeTrackingProjectWithTasksAndEmployeeIds '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: >- Forbidden. Insufficient user permissions or API access is not turned on. '406': description: Request not acceptable. '409': description: There was a conflict with the request. '500': description: Internal server error. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/aggregate: get: tags: - Goals summary: Get All Aggregate Goal Info operationId: Goals_getAllAggregateInfo description: >- Provides a list of all goals, type counts, goal comment counts, and employees shared with goals for the given employee. This version of the endpoint will not return any goals with milestones. Milestone functionality for this endpoint begins in version 1.2. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- employeeId is the employee ID used to generate the aggregate information. name: employeeId in: path required: true schema: type: string responses: '200': description: >- The response content will be an JSON document with the requested information. content: application/json: schema: $ref: '#/components/schemas/GoalsGetAllAggregateInfoResponse' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1_1/performance/employees/{employeeId}/goals/aggregate: get: tags: - Goals summary: Get All Aggregate Goal Info, Version 1.1 operationId: Goals_getAllAggregateInfo description: >- Provides a list of all goals, type counts, filter actions, goal comment counts, and employees shared with goals for the given employee. Difference from Version 1: Returns goals in the closed filter and provides filter actions for each filter. This version of the endpoint will not return any goals with milestones. Milestone functionality for this endpoint begins in version 1.2. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- employeeId is the employee ID used to generate the aggregate information. name: employeeId in: path required: true schema: type: string responses: '200': description: >- The response content will be an JSON document with the requested information. content: application/json: schema: $ref: '#/components/schemas/GoalsGetAllAggregateInfo200Response' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1_2/performance/employees/{employeeId}/goals/aggregate: get: tags: - Goals summary: Get All Aggregate Goal Info, Version 1.2 operationId: Goals_getAllAggregateInfo description: >- Provides a list of all goals, type counts, filter actions, goal comment counts, and employees shared with goals for the given employee. Difference from Version 1.1: Returns all goals, including goals that contain milestones. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- employeeId is the employee ID used to generate the aggregate information. name: employeeId in: path required: true schema: type: string responses: '200': description: >- The response content will be an JSON document with the requested information. content: application/json: schema: $ref: '#/components/schemas/GoalsGetAllAggregateInfo200Response1' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/aggregate: get: tags: - Goals summary: Get Aggregate Goal Info operationId: Goals_getGoalAggregateInfo description: >- Provides goal information, goal comments, and employees shared with goals or who have commented on the given goal. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the Goal ID used to generate the aggregate information. name: goalId in: path required: true schema: type: string responses: '200': description: >- The response content will be an JSON document with the requested information. content: application/json: schema: $ref: '#/components/schemas/GoalsGetGoalAggregateInfoResponse' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/sharedWith: put: tags: - Goals summary: Update Goal Sharing operationId: Goals_updateGoalSharing description: Updates which employees this goal is shared with. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string requestBody: description: >- Employee IDs of employees with whom the goal is shared. All goal owners are considered "shared with". content: application/json: schema: $ref: '#/components/schemas/GoalsUpdateGoalSharingRequest' required: true responses: '200': description: >- A successful response indicates that all the requested changes were made. The content of the response will be the goal response object for the specified goalId. content: application/json: schema: $ref: '#/components/schemas/GoalsUpdateGoalSharingResponse' '400': description: The posted JSON is invalid. '403': description: Goal is not editable or insufficient permissions. '404': description: No goal found for the given goalId. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/progress: put: tags: - Goals summary: Update Goal Progress operationId: Goals_updateProgress parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: integer - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: integer requestBody: description: >- Employee IDs of employees with whom the goal is shared. All goal owners are considered "shared with". content: application/json: schema: $ref: '#/components/schemas/GoalsUpdateProgressRequest' required: true responses: '200': description: >- A successful response indicates that all the requested changes were made. The content of the response will be the goal response object for the specified goalId. content: application/json: schema: $ref: '#/components/schemas/GoalsUpdateProgressResponse' '400': description: The posted JSON is invalid. '403': description: Goal is not editable or insufficient permissions. '404': description: No goal found for the given goalId. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/filters: get: tags: - Goals summary: Get Goal Status Counts operationId: Goals_statusCount description: Get the number of goals per status for an employee. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID to whom the goals are assigned. name: employeeId in: path required: true schema: type: string responses: '200': description: >- The response content will be a JSON document with the requested information. content: application/json: schema: $ref: '#/components/schemas/GoalsStatusCountResponse' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1_1/performance/employees/{employeeId}/goals/filters: get: tags: - Goals summary: Get Goal Status Counts, Version 1.1 operationId: Goals_countPerStatus description: >- Get the number of goals per status for an employee. Difference from Version 1: Returns goals in the closed filter and provides filter actions for each filter. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID to whom the goals are assigned. name: employeeId in: path required: true schema: type: string responses: '200': description: >- The response content will be a JSON document with the requested information. content: application/json: schema: $ref: '#/components/schemas/GoalsCountPerStatusResponse' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/canCreateGoals: get: tags: - Goals summary: Can Create a Goal operationId: Goals_determinePermission description: >- Determine if the API user has permission to create a goal for this employee. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string responses: '200': description: >- The response content will be a JSON document with the requested information. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals: get: tags: - Goals summary: Get Goals operationId: Goals_getEmployeeGoals description: Get goals for an employee. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID to whom the goals are assigned. name: employeeId in: path required: true schema: type: string - description: >- A filter that can be applied to only show the goals that are in a certain state. name: filter in: query required: false schema: type: string responses: '200': description: >- The response content will be a JSON document with the requested information. content: application/json: schema: $ref: '#/components/schemas/GoalsGetEmployeeGoalsResponse' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Goals summary: Create Goal operationId: Goals_createEmployeeGoal description: Create a new goal for an employee. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NewGoal' required: true responses: '201': description: A goal object that includes the new goal ID. content: application/json: schema: $ref: '#/components/schemas/GoalsCreateEmployeeGoalResponse' '400': description: >- If the posted XML or JSON is invalid or the minimum fields are not provided. '403': description: >- If the API user does not have permission to create a goal for this employee. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}: put: tags: - Goals summary: Update Goal operationId: Goals_updateEmployeeGoal description: >- Update a goal. This version will not update a goal to contain milestones, that functionality is added in version 1.1 parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string requestBody: description: >- Required fields: title, sharedWithEmployeeIds, dueDate. Any non-required field not provided will overwrite existing data with a NULL value. content: application/json: schema: $ref: '#/components/schemas/Goal' required: true responses: '200': description: >- A successful response indicates that all the requested changes were made. The content of the response will be the goal response object for the specified goalId. content: application/json: schema: $ref: '#/components/schemas/GoalsUpdateEmployeeGoalResponse' '400': description: The posted JSON is invalid. '403': description: Goal is not editable or insufficient permissions. '404': description: The goal specified by the given goalId was not found. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Goals summary: Delete Goal operationId: Goals_deleteById description: Delete a goal. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string responses: '204': description: Successful deletion will return a 204 - No content response. '400': description: The posted JSON is invalid. '403': description: Goal is not editable or insufficient permissions. '404': description: The goal specified by the given goalId was not found. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1_1/performance/employees/{employeeId}/goals/{goalId}: put: tags: - Goals summary: Update Goal, V1.1 operationId: Goals_updateEmployeeGoalV11 description: >- Update a goal. Version 1.1 allows the updating of the milestones contained within the goal, unlike Version 1. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string requestBody: description: >- Required fields: title, sharedWithEmployeeIds, dueDate. Any non-required field not provided will overwrite existing data with a NULL value. content: application/json: schema: $ref: '#/components/schemas/UpdateGoalV1_1' required: true responses: '200': description: >- A successful response indicates that all the requested changes were made. The content of the response will be the goal response object for the specified goalId. content: application/json: schema: $ref: '#/components/schemas/GoalsUpdateEmployeeGoalV11Response' '400': description: The posted JSON is invalid. '403': description: Goal is not editable or insufficient permissions. '404': description: The goal specified by the given goalId was not found. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/close: post: tags: - Goals summary: Close Goal operationId: Goals_closeGoal description: Close a goal. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string requestBody: description: Comment field is optional. content: application/json: schema: $ref: '#/components/schemas/GoalsCloseGoalRequest' responses: '201': description: >- A successful response indicates that all the goal was closed. The content of the response will be the goal response object for the specified goalId. content: application/json: schema: $ref: '#/components/schemas/GoalsCloseGoalResponse' '400': description: The posted JSON is invalid. '403': description: Goal is not editable or insufficient permissions. '404': description: The goal specified by the given goalId was not found. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/reopen: post: tags: - Goals summary: Reopen a Goal operationId: Goals_reopenGoal description: Reopen a goal. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string responses: '201': description: >- A successful response indicates that all the goal was reopened. The content of the response will be the goal response object for the specified goalId. content: application/json: schema: $ref: '#/components/schemas/GoalsReopenGoalResponse' '400': description: The posted JSON is invalid. '403': description: Goal is not editable or insufficient permissions. '404': description: The goal specified by the given goalId was not found. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/shareOptions: get: tags: - Goals summary: Available Goal Sharing Options operationId: Goals_shareOptionsGet description: >- Provides a list of employees with whom the specified employee's goals may be shared. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID to get sharing options for. name: employeeId in: path required: true schema: type: string - description: >- The search term used to filter employees returned. Will search name, employee ID and email. name: search in: query required: false schema: type: string - description: Limit will restrict results to specified number. name: limit in: query required: false schema: type: string responses: '200': description: >- The response content will be a JSON document with a list of available employees with whom the goals can be shared. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/alignmentOptions: get: tags: - Goals summary: Alignable Goal Options operationId: Goals_getAlignableOptions description: Get alignable goal options for an employee. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID to get alignable goal options for. name: employeeId in: path required: true schema: type: string requestBody: description: >- Get alignment options including the option currently aligned with this goal (if applicable). If omitted, response will be alignment options belonging to the API user. content: application/json: schema: $ref: '#/components/schemas/GoalsGetAlignableOptionsRequest' responses: '200': description: >- The response content will be a JSON document with a list of goals that are available alignment options. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/comments: get: tags: - Goals summary: Get Goal Comments operationId: Goals_getComments description: Get comments for a goal. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string responses: '200': description: >- The response content will be a JSON document with a list of comments for the specified goal. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Goals summary: Create Goal Comment operationId: Goals_createComment description: Create a new goal comment. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/post-goal-commentText' responses: '201': description: A goal comment object with the new goal comment ID. '400': description: >- If the posted XML or JSON is invalid or the minimum fields are not provided. '403': description: >- If the API user does not have permission to add a comment to the specified goal. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/comments/{commentId}: put: tags: - Goals summary: Update Goal Comment operationId: Goals_updateComment description: Update a goal comment. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string - description: commentId is the comment ID for the specified goal. name: commentId in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/post-goal-commentText' responses: '200': description: >- A successful response indicates that all the requested changes were made. The content of the response will be the goal comment response object for the specified commentId. '400': description: The posted JSON is invalid. '403': description: Goal is not editable or insufficient permissions. '404': description: The goal specified by the given goalId was not found. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Goals summary: Delete Goal Comment operationId: Goals_deleteComment description: Delete a goal comment. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: employeeId is the employee ID with whom the goal is associated. name: employeeId in: path required: true schema: type: string - description: goalId is the goal ID for the specified employee. name: goalId in: path required: true schema: type: string - description: commentId is the ID of a specific comment for the specified goal. name: commentId in: path required: true schema: type: string responses: '204': description: Successful deletion will return a 204 - No content response. '400': description: The posted JSON is invalid. '403': description: Goal is not editable or insufficient permissions. '404': description: The goal specified by the given goalId was not found. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/jobs: get: tags: - Applicant Tracking summary: Get Job Summaries operationId: ApplicantTracking_getJobSummaries description: >- Get a list of job summaries. The owner of the API key used must have access to ATS settings. Combine as many different optional parameter filters as you like. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: A list of status groups to filter positions by. name: statusGroups in: query schema: type: string enum: - ALL - DRAFT_AND_OPEN - Open - Filled - Draft - Deleted - On Hold - Canceled - description: A specific field to sort the results by. name: sortBy in: query schema: type: string enum: - count - title - lead - created - status - description: Order by which to sort results. name: sortOrder in: query schema: type: string enum: - ASC - DESC responses: '200': description: Success. content: application/json: examples: response: value: - title: id: 7153 label: Draftsperson postedDate: '2017-11-30 16:59:40' location: id: 5094 label: St. Louis address: description: null name: null addressLine1: null addressLine2: null city: Lehi state: Utah zipcode: '84043' country: United States phoneNumber: null department: id: 367 label: Engineering status: id: 1 label: Open newApplicantsCount: 1 activeApplicantsCount: 3 totalApplicantsCount: 4 id: 2 postingUrl: string - title: id: 16222 label: HR Specialist postedDate: '2017-12-08 15:29:44' location: id: 5094 label: St. Louis address: description: null name: null addressLine1: null addressLine2: null city: Lehi state: Utah zipcode: '84043' country: United States phoneNumber: null department: id: 17813 label: HR status: id: 1 label: Open newApplicantsCount: 5 activeApplicantsCount: 5 totalApplicantsCount: 5 id: 3 postingUrl: string schema: $ref: '#/components/schemas/ApplicantTrackingGetJobSummariesResponse' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/applications: get: tags: - Applicant Tracking summary: Get Applications operationId: ApplicantTracking_listApplications description: >- Get a list of applications. The owner of the API key used must have access to ATS settings. Combine as many different optional parameter filters as you like. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The page number name: page in: query schema: type: integer - description: A Job Id to limit results to name: jobId in: query schema: type: integer - description: Application status id to filter by. name: applicationStatusId in: query schema: type: integer - description: A list of application status groups to filter by. name: applicationStatus in: query schema: type: string enum: - ALL - ALL_ACTIVE - NEW - ACTIVE - INACTIVE - HIRED - description: A list of position status groups to filter by. name: jobStatusGroups in: query schema: type: string enum: - ALL - DRAFT_AND_OPEN - Open - Filled - Draft - Deleted - On Hold - Canceled - description: A general search criteria by which to find applications. name: searchString in: query schema: type: string - description: A specific field to sort the results by. name: sortBy in: query schema: type: string enum: - first_name - job_title - rating - phone - status - last_updated - created_date - description: Order by which to sort results. name: sortOrder in: query schema: type: string enum: - ASC - DESC - description: >- Only get applications newer than a given UTC timestamp, for example 2024-01-01 13:00:00 name: newSince in: query schema: type: string format: date-time responses: '200': description: Success. content: application/json: examples: response: value: paginationComplete: true applications: - id: 0 appliedDate: string status: id: 0 label: string rating: 0 applicant: id: 0 firstName: string lastName: string avatar: string job: title: id: 0 label: string id: 0 nextPageUrl: string schema: $ref: '#/components/schemas/ApplicantTrackingListApplicationsResponse' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/applications/{applicationId}: get: tags: - Applicant Tracking summary: Get Application Details operationId: ApplicantTracking_getApplicationDetails description: >- Get the details of an application. The owner of the API key used must have access to ATS settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the application to look up details. name: applicationId in: path required: true schema: type: integer default: 0 responses: '200': description: Success. content: application/json: examples: response: value: id: 4 appliedDate: '2018-02-09 19:43:31' status: id: 19 label: Moved changedByUser: id: 2292 firstName: Jim lastName: Gang avatar: null rating: 5 resumeFileId: 10 coverLetterFileId: 5 movedTo: applicationId: 5 job: title: id: 254 label: HR Specialist id: 16222 movedFrom: null alsoAppliedToCount: 2 duplicateApplicationCount: 1 referredBy: null desiredSalary: '80000' commentCount: 1 emailCount: 0 questionsAndAnswers: - question: id: 1 label: What's your favorite color answer: id: 22 label: blue applicant: email: test@bamboohr.com phoneNumber: '8019942392' address: addressLine1: 12 w 12 s addressLine2: null city: Lehi state: UT zipcode: '84005' country: United States linkedinUrl: null websiteUrl: null availableStartDate: null education: institution: Arizona University level: id: 10 label: Master of Science id: 35 firstName: Jimmy lastName: Jackson avatar: null job: title: id: 6477 label: CEO hiringLead: employeeId: 40340 firstName: Josh lastName: Smith avatar: null jobTitle: id: 205 label: Head Engineer id: 1 schema: $ref: >- #/components/schemas/ApplicantTrackingGetApplicationDetailsResponse '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/applications/{applicationId}/comments: post: tags: - Applicant Tracking summary: Add Application Comment operationId: ApplicantTracking_addApplicationComment description: >- Add a comment to an application. The owner of the API key used must have access to ATS settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the application to add a comment to. name: applicationId in: path required: true schema: type: integer default: 0 requestBody: description: Comment object to post content: application/json: schema: $ref: >- #/components/schemas/ApplicantTrackingAddApplicationCommentRequest required: true responses: '200': description: Success. '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/statuses: get: tags: - Applicant Tracking summary: Get Statuses operationId: ApplicantTracking_listStatuses description: >- Get a list of statuses for a company. The owner of the API key used must have access to ATS settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: Success. content: application/json: examples: response: value: - description: null code: PHONE enabled: true id: '2' manageable: true name: Phone Screened translatedName: Phone Screened schema: $ref: '#/components/schemas/ApplicantTrackingListStatusesResponse' '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/applications/{applicationId}/status: post: tags: - Applicant Tracking summary: Change Applicant's Status operationId: ApplicantTracking_changeApplicantStatus description: >- Change applicant's status. The owner of the API key used must have access to ATS settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the application to add a comment to. name: applicationId in: path required: true schema: type: integer default: 0 requestBody: description: Sample Post Data. content: application/json: schema: $ref: >- #/components/schemas/ApplicantTrackingChangeApplicantStatusRequest required: true responses: '200': description: Success '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/locations: get: tags: - Applicant Tracking summary: Get Company Locations operationId: ApplicantTracking_getCompanyLocations description: >- Get company locations for use in creating a new job opening. The owner of the API key used must have access to ATS settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: Success content: application/json: schema: $ref: >- #/components/schemas/ApplicantTrackingGetCompanyLocationsResponse '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/hiring_leads: get: tags: - Applicant Tracking summary: Get Hiring Leads operationId: ApplicantTracking_getHiringLeads description: >- Get potential hiring leads for use in creating a new job opening. The owner of the API key used must have access to ATS settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ApplicantTrackingGetHiringLeadsResponse' '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/application: post: tags: - Applicant Tracking summary: Add New Candidate operationId: ApplicantTracking_createNewApplication description: >- Add a new candidate application to a job opening. The owner of the API key used must have access to ATS settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: multipart/form-data: schema: $ref: >- #/components/schemas/ApplicantTrackingCreateNewApplicationRequest required: true responses: '200': description: Success content: application/json: examples: response: value: - result: success candidateId: 42 schema: $ref: >- #/components/schemas/ApplicantTrackingCreateNewApplicationResponse '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. '422': description: Unprocessable entity. One or more parameters failed validation. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/applicant_tracking/job_opening: post: tags: - Applicant Tracking summary: Add New Job Opening operationId: ApplicantTracking_createNewJobOpening description: >- Add a new job opening. The owner of the API key used must have access to ATS settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/ApplicantTrackingCreateNewJobOpeningRequest' required: true responses: '200': description: Success content: application/json: examples: response: value: - result: success jobOpeningId: 11 schema: $ref: >- #/components/schemas/ApplicantTrackingCreateNewJobOpeningResponse '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. '422': description: Unprocessable entity. One or more parameters failed validation. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/training/type: get: tags: - Training summary: List Training Types operationId: Training_getTypes description: >- Get a list of training types. The owner of the API key used must have access to training settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/TrainingGetTypesResponse' examples: response: value: '1': description: null id: '1' name: Emergency Preparedness renewable: false frequency: 0 dueFromHireDate: [] required: false category: [] linkUrl: https://example.com/ allowEmployeesToMarkComplete: true '2': description: Very important. id: 2X name: CPR Certification renewable: true frequency: '12' dueFromHireDate: unit: day amount: '1' required: true category: id: '18001' name: First Aid Trainings linkUrl: null allowEmployeesToMarkComplete: false '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Training summary: Add Training Type operationId: Training_typeAddition description: >- Add a training type. The owner of the API key used must have access to training settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: description: Training object to post content: application/json: schema: $ref: '#/components/schemas/TrainingTypeAdditionRequest' required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/TrainingType' application/xml: schema: $ref: '#/components/schemas/TrainingType' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/training/type/{trainingTypeId}: put: tags: - Training summary: Update Training Type operationId: Training_updateType description: >- Update an existing training type. The owner of the API key used must have access to training settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the training type to update. name: trainingTypeId in: path required: true schema: type: integer default: 0 requestBody: description: Training type object to update to content: application/json: schema: $ref: '#/components/schemas/TrainingUpdateTypeRequest' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/TrainingType' application/xml: schema: $ref: '#/components/schemas/TrainingType' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Training summary: Delete Training Type operationId: Training_removeType description: >- Delete an existing training type. The owner of the API key used must have access to training settings. Deleting a training type will only be successful if all employee trainings for this type have been removed prior to this request. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the training type to delete. name: trainingTypeId in: path required: true schema: type: integer default: 0 responses: '200': description: Success '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url or training type does not exist. '405': description: Training type was unable to be deleted. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/training/category: get: tags: - Training summary: List Training Categories operationId: Training_categoryList description: >- Get a list of training categories. The owner of the API key used must have access to training settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/TrainingCategoryListResponse' examples: response: value: '18047': id: 18001X name: First Aid Trainings '18048': id: '18002' name: Management Training '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Training summary: Add Training Category operationId: Training_addCategory description: >- Add a training category. The owner of the API key used must have access to training settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: description: Training category to post content: application/json: schema: $ref: '#/components/schemas/TrainingAddCategoryRequest' required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/TrainingCategory' application/xml: schema: $ref: '#/components/schemas/TrainingCategory' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/training/category/{trainingCategoryId}: put: tags: - Training summary: Update Training Category operationId: Training_updateCategory description: >- Update an existing training category. The owner of the API key used must have access to training settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the training category to update. name: trainingCategoryId in: path required: true schema: type: integer default: 0 requestBody: description: Training category to update content: application/json: schema: $ref: '#/components/schemas/TrainingUpdateCategoryRequest' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/TrainingCategory' application/xml: schema: $ref: '#/components/schemas/TrainingCategory' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Training summary: Delete Training Category operationId: Training_deleteCategory description: >- Delete an existing training category. The owner of the API key used must have access to training settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the training category to delete. name: trainingCategoryId in: path required: true schema: type: integer default: 0 responses: '200': description: Success '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url or training category does not exist. '500': description: Internal server error x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/training/record/employee/{employeeId}: get: tags: - Training summary: List Employee Trainings operationId: Training_listEmployeeTrainings description: >- Get all employee training records. The owner of the API key used must have access to view the employee. The API will only return trainings for the employee that the owner of the API key has permission to see. Included with each employee training is the training information that has been selected for tracking in settings. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the employee to get a list of trainings for. name: employeeId in: path required: true schema: type: integer default: 0 - description: >- The training type id is optional. Not supplying a training type id will return the collection of all training records for the employee. name: trainingTypeId in: query required: false schema: type: integer default: 0 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/TrainingListEmployeeTrainingsResponse' examples: response: value: '13': id: '13' employeeId: '40468' trainingTypeId: '4' completed: '2015-11-20' notes: null credits: null cost: null '14': id: '14' employeeId: '40468' trainingTypeId: '4' completed: '2015-05-21' notes: null credits: null cost: null '15': id: '15' employeeId: '40468' trainingTypeId: '4' completed: '2016-07-01' notes: '55' credits: '55' cost: 55.00 USD '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Training summary: Add New Employee Training Record operationId: Training_addEmployeeTrainingRecord description: >- Add a new employee training record. The owner of the API key used must have permission to add trainings for the selected employee. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the employee to add a training record to. name: employeeId in: path required: true schema: type: integer default: 0 requestBody: description: Training object to post content: application/json: schema: $ref: '#/components/schemas/TrainingAddEmployeeTrainingRecordRequest' required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/TrainingRecord' application/xml: schema: $ref: '#/components/schemas/TrainingRecord' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/training/record/{employeeTrainingRecordId}: put: tags: - Training summary: Update Employee Training Record operationId: Training_updateEmployeeTrainingRecord description: >- Update an existing exmployee training record. The owner of the API key used must have permission to add trainings for the selected employee parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the training record to update. name: employeeTrainingRecordId in: path required: true schema: type: integer default: 0 requestBody: description: Training object to update content: application/json: schema: $ref: '#/components/schemas/TrainingUpdateEmployeeTrainingRecordRequest' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/TrainingRecord' application/xml: schema: $ref: '#/components/schemas/TrainingRecord' '400': description: Bad request parameters. '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Training summary: Delete Employee Training Record operationId: Training_deleteEmployeeRecord description: >- Delete an existing employee training record. The owner of the API key used must have permission to view and edit the employee and training type. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The ID of the training record to delete. name: employeeTrainingRecordId in: path required: true schema: type: integer default: 0 responses: '200': description: Success '401': description: Unauthorized. Invalid API credentials. '403': description: Insufficient user permissions or API access is not turned on. '404': description: Bad request url or training record does not exist. '405': description: Unable to delete training record. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/webhooks/monitor_fields: get: tags: - Webhooks summary: Get monitor fields operationId: Webhooks_listMonitorFields description: Get a list fields webhooks can monitor monitor parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: A list of logs content: application/json: schema: $ref: '#/components/schemas/WebhooksListMonitorFieldsResponse' '401': description: The user API key is invalid. '500': description: Internal error content: application/json: schema: $ref: '#/components/schemas/Webhook500Error' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/webhooks/{id}/log: get: tags: - Webhooks summary: Get Webhook Logs operationId: Webhooks_getWebhookLogs description: >- Get webhook logs for specific webhook id that is associated with the user API Key. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The webhook ID to get logs about. name: id in: path required: true schema: type: string responses: '200': description: A Webhook content: application/json: schema: $ref: '#/components/schemas/WebHookLogResponse' '403': description: >- The API user key is invalid, or does not have permission to see the requested webhook. content: application/json: schema: $ref: '#/components/schemas/Webhook403Error' '404': description: The webhook does not exist. content: application/json: schema: $ref: '#/components/schemas/Webhook404Error' '500': description: Internal error content: application/json: schema: $ref: '#/components/schemas/Webhook500Error' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{id}: get: tags: - Employees summary: Get Employee operationId: Employees_getEmployeeData description: >- Get employee data by specifying a set of fields. This is suitable for getting basic employee information, including current values for fields that are part of a historical table, like job title, or compensation information. See the [fields](ref:metadata-get-a-list-of-fields) endpoint for a list of possible fields. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- {fields} is a comma separated list of values taken from the official list of field names. name: fields in: query required: true schema: type: string default: firstName,lastName - description: >- {id} is an employee ID. The special employee ID of zero (0) means to use the employee ID associated with the API key (if any). name: id in: path required: true schema: type: string default: 0 - description: >- Setting to false will return future dated values from history table fields. name: onlyCurrent in: query required: false schema: type: boolean default: true responses: '200': description: An Employee content: application/json: schema: $ref: '#/components/schemas/EmployeesGetEmployeeDataResponse' application/xml: schema: $ref: '#/components/schemas/EmployeesGetEmployeeData200Response' '403': description: >- if the API user does not have permission to see the requested employee. '404': description: if the employee does not exist. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false post: tags: - Employees summary: Update Employee operationId: Employees_updateEmployee description: >- Update an employee, based on employee ID. If employee is currently on a pay schedule syncing with Trax Payroll, or being added to one, the API user will need to update the employee with all of the following required fields for the update to be successful (listed by API field name): employeeNumber, firstName, lastName, dateOfBirth, ssn, gender, maritalStatus, hireDate, address1, city, state, country, employmentHistoryStatus, exempt, payType, payRate, payPer, location, department, and division. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is an employee ID.' name: id in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Employee' required: true responses: '200': description: Employee updated successfully. '400': description: Provided JSON is bad or user is missing required fields. '403': description: >- If the user doesn't have perms to see the employee or the user doesn't have perms to update ANY of the requested fields. '404': description: If the employee to be updated doesn't exist. '409': description: If an employee field was given an invalid value x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees: post: tags: - Employees summary: Add Employee operationId: Employees_createNewEmployee description: >- Add a new employee. New employees must have at least a first name and a last name. The ID of the newly created employee is included in the Location header of the response. Other fields can be included. Please see the [fields](ref:metadata-get-a-list-of-fields) endpoint. New Employees added to a pay schedule synced with Trax Payroll must have the following required fields (listed by API field name): employeeNumber, firstName, lastName, dateOfBirth, ssn, gender, maritalStatus, hireDate, address1, city, state, country, employmentHistoryStatus, exempt, payType, payRate, payPer, location, department, and division. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/postNewEmployee' required: true responses: '201': description: >- Additionally, an HTTP Location: header that points to the new API URL for the new employee will be returned. headers: Location: description: >- The URL to view the employee in the web app. The ID of the employee will be included. schema: type: string '400': description: >- If the posted XML or JSON is invalid or the minimum fields are not provided. '403': description: If the API user does not have permission to add an employee. '409': description: If an employee field was given an invalid value. x-unitTests: - request: method: POST uri: /employees/ headers: Authorization: Basic {{apiKey}} Accept: application/json Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Add Employee (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{id}/files/view: get: tags: - Employee Files summary: List employee files and categories operationId: EmployeeFiles_listFilesAndCategories description: Lists employee files and categories parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: >- {id} is an employee ID. The special employee ID of zero (0) means to use the employee ID associated with the API key (if any). name: id in: path required: true schema: type: string default: 0 responses: '200': description: Employee file and category list '403': description: >- if the API user does not have permission to see the requested employee or the employee's files. '404': description: if no files are found for this employee. x-unitTests: - request: method: GET uri: /employees/{id}/files/view headers: Authorization: Basic {{apiKey}} Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Get Employees (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/files/view: get: tags: - Company Files summary: List company files and categories operationId: CompanyFiles_listFilesAndCategories description: Lists company files and categories parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: Company files and category list '403': description: if the API user does not have permission to see the company files. '404': description: if no files or categories are found. x-unitTests: - request: method: GET uri: /files/view headers: Authorization: Basic {{apiKey}} Content-Type: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'SDD: Get Employees (BAD)' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/meta/fields: get: tags: - Account Information summary: Get a list of fields operationId: AccountInformation_getFieldList description: >- This endpoint can help with discovery of fields that are available in an account. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: All fields available in BambooHR. x-unitTests: - request: method: GET uri: /meta/fields/ headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/meta/tables: get: tags: - Account Information summary: Get a list of tabular fields operationId: AccountInformation_discoverTableFields description: >- This endpoint can help discover table fields available in your BambooHR account. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: All table fields available in BambooHR x-unitTests: - request: method: GET uri: /meta/tables/ headers: Authorization: Basic {{apiKey}} Accept: application/xml expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Tabular Fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/meta/lists: get: tags: - Account Information summary: Get details for list fields operationId: AccountInformation_getListFields description: >- This endpoint will return details for all list fields. Lists that can be edited will have the "manageable" attribute set to yes. Lists with the "multiple" attribute set to yes are fields that can have multiple values. Options with the "archived" attribute set to yes should not appear as current options, but are included so that historical data can reference the value. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: All details for list fields available in BambooHR x-unitTests: - request: method: GET uri: /meta/lists/ headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get details for list fields' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/meta/users: get: tags: - Account Information summary: Get a List of Users operationId: AccountInformation_getUserList description: '' parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /meta/users/ headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Users' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/meta/time_off/types: get: tags: - Time Off summary: Get Time Off Types operationId: TimeOff_getTimeOffTypes description: This endpoint gets a list of time off types. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - 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. name: mode in: query required: false schema: type: string responses: '200': description: Time off types x-unitTests: - request: method: GET uri: /meta/time_off/types/ headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get Time Off Types' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/meta/time_off/policies: get: tags: - Time Off summary: Get Time Off Policies operationId: TimeOff_getPolicies description: This endpoint gets a list of time off policies. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: '' x-unitTests: - request: method: GET uri: /meta/time_off/policies/ headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Metadata: Get a List of Time Off Policies' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_off/requests: get: tags: - Time Off summary: Get Time Off Requests operationId: TimeOff_getTimeOffRequests description: '' parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: A particular request ID to limit the response to. name: id in: query required: false schema: type: integer - description: >- Limit to requests that the user has a particular level of access to. Legal values are: "view" or "approve". Defaults to view. name: action in: query required: false schema: type: string - description: A particular employee ID to limit the response to. name: employeeId in: query required: false schema: type: string - description: >- YYYY-MM-DD. Only show time off that occurs on/after the specified start date. name: start in: query required: true schema: type: string - description: >- YYYY-MM-DD. Only show time off that occurs on/before the specified end date. name: end in: query required: true schema: type: string - description: >- A comma separated list of time off types IDs to include limit the response to. If omitted, requests of all types are included. name: type in: query required: false schema: type: string - description: >- A comma separated list of request status values to include. If omitted, requests of all status values are included. Legal values are "approved", "denied", "superceded", "requested", "canceled". name: status in: query required: false schema: type: string responses: '200': description: '' '400': description: Malformed request x-unitTests: - request: method: GET uri: /time_off/requests/ headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get Time Off Requests' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: true IsMultiContentStreaming: false /{companyDomain}/v1/employees/{employeeId}/time_off/history: put: tags: - Time Off summary: Add a Time Off History Item For Time Off Request operationId: TimeOff_addTimeOffHistoryItem description: >- To use this API make an HTTP PUT where the body of the request is the JSON documented below. A new time off history item will be inserted into the database. On success, a 201 Created code is returned and the "Location" header of the response will contain a URL that identifies the new history item. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - $ref: '#/components/parameters/EmployeeIdPathParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/TimeOffHistory' required: true responses: '201': description: The history item has been created. '400': description: >- For empty or malformed JSON, an invalid date format, or an invalid time off request. '403': description: Invalid permissions to perform this action. '409': description: If the time off request already has a history item. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/employees/{employeeId}/time_off/balance_adjustment: put: tags: - Time Off summary: Adjust Time Off Balance operationId: TimeOff_balanceAdjustmentPut description: >- To use this API make an HTTP PUT where the body of the request is the JSON documented below. A time off balance adjustment will be inserted into the database. On success, a 201 Created code is returned and the "Location" header of the response will contain a URL that identifies the new history item. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - $ref: '#/components/parameters/EmployeeIdPathParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/AdjustTimeOffBalance' required: true responses: '201': description: The balance adjustment has been created. '400': description: >- For empty or malformed JSON, an invalid date format, or an invalid time off type. '403': description: Invalid permissions to perform this action. x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/time_off/whos_out: get: tags: - Time Off summary: Get a list of Who's Out operationId: TimeOff_getWhosOutList description: >- This endpoint will return a list, sorted by date, of employees who will be out, and company holidays, for a period of time. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: A date in the form YYYY-MM-DD - defaults to the current date. name: start in: query required: false schema: type: string - description: >- A date in the form YYYY-MM-DD - defaults to 14 days from the start date. name: end in: query required: false schema: type: string responses: '200': description: '' x-unitTests: - request: method: GET uri: /time_off/whos_out/ headers: Authorization: Basic {{apiKey}} Accept: application/json expectedResponse: x-allowExtraHeaders: true x-bodyMatchMode: NONE x-arrayOrderedMatching: false x-arrayCheckCount: false x-matchResponseSchema: true headers: {} x-testShouldPass: true x-testEnabled: true x-testName: 'Time Off: Get a list of Who''s Out' x-testDescription: 'TODO: Add Description' x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/webhooks: post: tags: - Webhooks summary: Add Webhook operationId: Webhooks_addNewWebhook description: >- Add a new Webhook. For more details or instructions you can refer to the [webhooks API tutorial](https://documentation.bamboohr.com/docs/webhooks-api-permission-based). parameters: - $ref: '#/components/parameters/CompanyDomainParameter' requestBody: $ref: '#/components/requestBodies/NewWebHook' responses: '201': description: >- Webhook created, JSON output of webhook follows. Private key is included in the create webhook only! content: application/json: schema: $ref: '#/components/schemas/WebhooksAddNewWebhookResponse' '400': description: >- Provided JSON is bad, missing required fields, or mulitple access levels. content: application/json: schema: $ref: '#/components/schemas/Webhook400Error' '401': description: The user API key is invalid. '403': description: Permission violations in the fields selected. content: application/json: schema: $ref: '#/components/schemas/WebhooksAddNewWebhook403Response' '500': description: Internal error content: application/json: schema: $ref: '#/components/schemas/Webhook500Error' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false get: tags: - Webhooks summary: Gets as list of webhooks for the user API key. operationId: Webhooks_getUserList description: Gets as list of webhooks for the user API key. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' responses: '200': description: List of webhooks content: application/json: schema: $ref: '#/components/schemas/WebhooksGetUserListResponse' '401': description: The user API key is invalid. '500': description: Internal error content: application/json: schema: $ref: '#/components/schemas/Webhook500Error' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /{companyDomain}/v1/webhooks/{id}: get: tags: - Webhooks summary: Get Webhook operationId: Webhooks_getUserWebhook description: Get webhook data that is tied to a specific user API Key. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: The webhook ID to display details about. name: id in: path required: true schema: type: string responses: '200': description: A Webhook content: application/json: schema: $ref: '#/components/schemas/WebHookResponse' '401': description: The user API key is invalid. '403': description: >- The API user key does not have permission to see the requested webhook. content: application/json: schema: $ref: '#/components/schemas/Webhook403Error' '404': description: The webhook does not exist. content: application/json: schema: $ref: '#/components/schemas/Webhook404Error' '500': description: Internal error content: application/json: schema: $ref: '#/components/schemas/Webhook500Error' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false put: tags: - Webhooks summary: Update Webhook operationId: Webhooks_updateWebhookById description: Update a webhook, based on webhook ID. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is a webhook ID.' name: id in: path required: true schema: type: string requestBody: $ref: '#/components/requestBodies/NewWebHook' responses: '200': description: Webhook updated successfully. content: application/json: schema: $ref: '#/components/schemas/WebHookResponse' '400': description: >- Provided JSON is bad, missing required fields, or mulitple access levels. content: application/json: schema: $ref: '#/components/schemas/Webhook400Error' '401': description: The user API key is invalid. '403': description: >- Permission violations in the fields selected, or the user does not have access to the webhook. content: application/json: schema: $ref: '#/components/schemas/WebhooksUpdateWebhookByIdResponse' '404': description: The webhook to be updated doesn't exist. content: application/json: schema: $ref: '#/components/schemas/Webhook404Error' '500': description: Internal error content: application/json: schema: $ref: '#/components/schemas/Webhook500Error' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false delete: tags: - Webhooks summary: Delete Webhook operationId: Webhooks_deleteWebhook description: Delete a webhook that is tied to a specific user API Key. parameters: - $ref: '#/components/parameters/CompanyDomainParameter' - description: '{id} is an webhook ID that is associated with the User API key.' name: id in: path required: true schema: type: string responses: '200': description: Webhook was deleted '401': description: The user API key is invalid. '403': description: >- The API user key does not have permission to delete the requested webhook. content: application/json: schema: $ref: '#/components/schemas/Webhook403Error' '404': description: The webhook to be deleted doesn't exist. content: application/json: schema: $ref: '#/components/schemas/Webhook404Error' '500': description: Internal error content: application/json: schema: $ref: '#/components/schemas/Webhook500Error' x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false components: parameters: CompanyDomainParameter: description: >- The subdomain used to access BambooHR. If you access BambooHR at https://mycompany.bamboohr.com, then the companyDomain is "mycompany" in: path name: companyDomain required: true schema: type: string EmployeeIdPathParameter: description: The ID of the employee. in: path name: employeeId required: true schema: type: integer AcceptHeaderParameter: description: This endpoint can produce either JSON or XML. name: Accept in: header required: false schema: type: string enum: - application/xml - application/json AcceptXmlHeaderParameter: description: This endpoint will produce XML. name: Accept in: header required: false schema: type: string enum: - application/xml AcceptJsonHeaderParameter: description: This endpoint will produce JSON. name: Accept in: header required: false schema: type: string enum: - application/json responses: '400': description: Unauthorized headers: X-BambooHR-Message: description: Human readable error to help when debugging, suitable for logging schema: type: string '401': description: Unauthorized headers: X-BambooHR-Message: description: Human readable error to help when debugging, suitable for logging schema: type: string '403': description: Forbidden headers: X-BambooHR-Message: description: Human readable error to help when debugging, suitable for logging schema: type: string '404': description: Not Found headers: X-BambooHR-Message: description: Human readable error to help when debugging, suitable for logging schema: type: string '409': description: Conflict headers: X-BambooHR-Message: description: Human readable error to help when debugging, suitable for logging schema: type: string '413': description: Payload too large headers: X-BambooHR-Message: description: The attempted file upload was too large schema: type: string '500': description: Unknown Error headers: X-BambooHR-Message: description: There was an unknown server error schema: type: string requestBodies: TimeOffPolicies: content: application/json: schema: $ref: '#/components/schemas/TimeOffPolicies' required: true NewWebHook: content: application/json: schema: $ref: '#/components/schemas/NewWebHook' required: true TableRowUpdate: content: application/json: schema: $ref: '#/components/schemas/TableRowUpdate' required: true EmployeeDependent: content: application/json: schema: $ref: '#/components/schemas/EmployeeDependent' required: true post-goal-commentText: content: application/json: schema: $ref: '#/components/schemas/GoalsCreateCommentRequest' required: true securitySchemes: auth: type: oauth2 flows: authorizationCode: authorizationUrl: https://{companyDomain}.bamboohr.com/authorize.php tokenUrl: https://{companyDomain}.bamboohr.com/token.php scopes: {} basic: type: http scheme: basic schemas: Employee: title: Employee when updating example: firstName: Panda lastName: Bear type: object properties: firstName: description: '' type: string maximum: 255 lastName: description: '' type: string maximum: 255 additionalProperties: true postNewEmployee: title: New Employee example: firstName: Panda lastName: Bear type: object properties: firstName: description: '' type: string maximum: 255 lastName: description: '' type: string maximum: 255 additionalProperties: true ListFieldValues: title: Add or Update Values for List Fields type: object properties: options: description: '' type: array items: type: object properties: id: description: '' type: integer value: description: '' type: string maximum: 255 archived: description: '' type: string maximum: 255 adpCode: description: '' type: string maximum: 255 TimeOffRequest: title: Add time off request type: object properties: status: description: '' type: string maximum: 255 start: description: '' type: string maximum: 255 end: description: '' type: string maximum: 255 timeOffTypeId: description: '' type: integer amount: description: '' type: integer notes: description: '' type: array items: type: object properties: from: type: string note: type: string dates: description: '' type: array items: type: object properties: ymd: type: string amount: type: integer previousRequest: description: '' type: integer request: title: Request Status example: status: Approved note: Note! type: object properties: status: description: One of approved, cancelled, denied type: string maximum: 20 note: description: A note to attach to the change in status type: string maximum: 255 TimeOffHistory: type: object properties: date: description: >- The date the request should be added in history. This will usually be the first date of the request. Should be in ISO8601 date format (YYYY-MM-DD). type: string timeOffRequestId: description: The ID of the time off request. type: integer note: description: This is an optional note to show in history. type: string maximum: 255 required: - date - timeOffRequestId AdjustTimeOffBalance: type: object properties: date: description: >- The date the adjustment should be added in history. Should be in ISO8601 date format (YYYY-MM-DD). type: string timeOffTypeId: description: The ID of the time off type to add a balance adjustment for. type: integer amount: description: The number of hours/days to adjust the balance by. type: number format: float note: description: This is an optional note to show in history. type: string maximum: 255 required: - date - timeOffTypeId - amount TimeOffPolicies: title: Time Off Policies type: array items: type: object properties: timeOffPolicyId: type: integer accrualStartDate: type: string PostNewEmployeeFileCategory: title: New Employee File Category example: - A new category type: array items: type: string EmployeeFileUpdate: title: Employee File Update type: object properties: name: description: '' type: string categoryId: description: '' type: string shareWithEmployee: description: '' type: string NewCompanyFileCategory: title: New Company File Category example: - A new category type: array items: type: string CompanyFileUpdate: title: Company File Update type: object properties: name: description: '' type: string categoryId: description: '' type: string shareWithEmployee: description: '' type: string RequestCustomReport: title: Request Custom Report type: object properties: title: description: '' type: string filters: description: '' type: object properties: lastChanged: description: '' type: object properties: includeNull: description: yes|no type: string value: description: Date last changed type: string fields: description: '' type: array items: description: '' type: string TableRowUpdate: title: Table Row Update type: object properties: date: description: '' type: string location: description: '' type: string division: description: '' type: string department: description: '' type: string jobTitle: description: '' type: string reportsTo: description: '' type: string Login: title: Login type: object properties: applicationKey: description: '' type: string user: description: '' type: string password: description: '' type: string EmployeeDependent: title: Employee Dependent type: object properties: employeeId: description: '' type: string firstName: description: '' type: string middleName: description: '' type: string lastName: description: '' type: string relationship: description: '' type: string gender: description: '' type: string ssn: description: '' type: string dateOfBirth: description: '' type: string addressLine1: description: '' type: string addressLine2: description: '' type: string city: description: '' type: string state: description: '' type: string zipCode: description: '' type: string homePhone: description: '' type: string country: description: '' type: string isUsCitizen: description: '' type: string isStudent: description: '' type: string CompanyBenefitResponse: title: Company Benefit type: object properties: description: description: Description type: string name: description: Name type: string benefitVendorId: description: Benefit vendor ID type: string benefitType: description: Benefit type type: string enum: - health - dental - vision - retirement - hsa - flex - life - disability - reimbursement - supplemental - other deductionTypeId: description: Deduction type ID type: integer startDate: description: Benefit start date type: string format: date endDate: description: Benefit end date type: string format: date planUrl: description: Plan url type: string ssoLoginUrl: description: SSO login url type: string ssoLoginUrlLinkText: description: SSO login link text type: string safeHarbor: description: Is a safe harbor type: string enum: - 'yes' - 'no' - null meetAcaMin: description: Meets ACA minimum requirements type: string enum: - 'yes' - 'no' - null reimbursementAmount: description: Reimbursement amount type: number reimbursementFrequency: description: Reimbursement frequency type: string enum: - pay period - month - quarter - year - one time - null minEssentialCoverage: description: Provides minimum essential coverage type: string enum: - 'yes' - 'no' - null CompanyBenefitRequest: title: Company Benefit Request type: object properties: description: description: Description type: string companyBenefitName: description: Name type: string benefitVendorId: description: Benefit vendor ID type: string benefitType: description: Benefit type type: string enum: - health - dental - vision - retirement - hsa - flex - life - disability - reimbursement - supplemental - other deductionTypeId: description: Deduction type ID type: string startDate: description: Benefit start date type: string format: date endDate: description: Benefit end date type: string format: date planUrl: description: Plan url type: string ssoLoginUrl: description: SSO login url type: string ssoLoginUrlLinkText: description: SSO login link text type: string safeHarbor: description: Is a safe harbor type: boolean meetAcaMin: description: Meets ACA minimum requirements type: boolean reimbursementAmount: description: Reimbursement amount type: number reimbursementFrequency: description: Reimbursement frequency type: string enum: - pay period - month - quarter - year - one time - null reimbursementCurrencyCode: description: Reimbursement currency code type: string minEssentialCoverage: description: Provides minimum essential coverage type: boolean CompanyBenefitType: title: Company Benefit Type type: object properties: name: description: The name of the company benefit plan. type: string slug: description: The unique identifier for the company benefit plan. type: string canBeAcaPlan: description: Can the company benefit plan be an ACA plan. type: boolean canCoExistEnrollment: description: Can the company benefit plan co-exist with an enrollment plan. type: boolean isReimbursementPlan: description: Is the company benefit plan a reimbursement plan. type: boolean EmployeeBenefitFilters: title: Employee Benefit Filters type: object properties: filters: description: At least one filter is required type: object properties: employeeId: description: Employee Id type: integer companyBenefitId: description: Company Benefit Id type: integer enrollmentStatusEffectiveDate: description: Enrollment Status Effective Date type: string format: date EmployeeBenefit: title: Employee Benefit type: object properties: employeeId: description: Employee ID type: integer companyBenefitId: description: Company benefit ID type: integer companyBenefitName: description: Company benefit name type: string coverageLevel: description: Coverage level type: string deductionEndDate: description: Deduction end date type: string format: date deductionStartDate: description: Deduction start date type: string format: date enrollmentStatus: description: Enrollment status type: string enum: - Eligible - Enrolled - Waived - Withdrawn - Terminated - Ineligible effectiveDate: description: Enrollment status effective date type: string format: date currencyCode: description: Currency code type: string employeeAmount: description: Employee amount type: number employeeAmountType: description: Employee amount type type: string employeePercentBasedOn: description: Employee percent based on type: string employeeCapAmount: description: Employee cap amount type: number employeeCapAmountType: description: Employee cap amount type type: string employeeAnnualMax: description: Employee annual max type: number companyAmount: description: Company amount type: number companyAmountType: description: Company amount type type: string companyPercentBasedOn: description: Company percent based on type: string companyCapAmount: description: Company cap amount type: number companyCapAmountType: description: Company cap amount type type: string companyAnnualMax: description: Company annual max type: number benefitPlanCoverageId: description: Benefit Plan Coverage ID type: number BenefitPlan: title: Benefit Plan type: object properties: description: description: '' type: string name: description: '' type: string type: description: '' type: string deductionTypeId: description: '' type: string startYmd: description: '' type: string endYmd: description: '' type: string url: description: '' type: string meetAcaMin: description: '' type: string BenefitPlanCoverage: title: Benefit Plan Coverage type: object properties: benefitPlanId: description: '' type: string benefitCoverageId: description: '' type: string totalCost: description: '' type: string currencyType: description: '' type: string startYmd: description: '' type: string endYmd: description: '' type: string BenefitGroup: title: Benefit Group type: object properties: name: description: '' type: string payPeriod: description: '' type: string startDate: description: '' type: string endDate: description: '' type: string BenefitGroupEmployee: title: Benefit Group Employee type: object properties: benefitGroupId: description: '' type: string employeeId: description: '' type: string startDate: description: '' type: string endDate: description: '' type: string BenefitGroupPlan: title: Benefit Group Plan type: object properties: benefitGroupId: description: '' type: string benefitPlanId: description: '' type: string eligibility: description: '' type: string waitPeriod: description: '' type: string waitPeriodType: description: '' type: string startDate: description: '' type: string endDate: description: '' type: string BenefitGroupPlanCost: title: Benefit Group Plan Cost type: object properties: benefitGroupPlanId: description: '' type: string benefitPlanCoverageId: description: '' type: string employeeCost: description: '' type: string companyCost: description: '' type: string startDate: description: '' type: string endDate: description: '' type: string EmployeeWithholding: title: Employee Withholding type: object properties: fedWithholding: description: '' type: string stateWithholding: description: '' type: string localWithholding: description: '' type: string additionalFed: description: '' type: string additionalState: description: '' type: string additionalLocal: description: '' type: string taxState: description: '' type: string taxLocal: description: '' type: string EmployeeDeposit: title: Employee Deposit type: object properties: accounts: description: '' type: array items: type: object properties: accountType: type: string maskedAccountNumber: type: string bankName: type: string depositOrder: type: string ruleType: type: string ruleAmount: type: string EmployeeUnpaidPaystub: title: Employee Unpaid Paystub type: object properties: employeeId: description: '' type: string unpaidPeriods: description: '' type: array items: type: object properties: payDate: type: string EmployeePaystub: title: Employee Paystub type: object properties: employeeId: description: '' type: string externalRecordId: description: '' type: string payPeriodFrom: description: '' type: string payPeriodTo: description: '' type: string payDate: description: '' type: string payorName: description: '' type: string payorAdd1: description: '' type: string payorAdd2: description: '' type: string payorCity: description: '' type: string payorState: description: '' type: string payorZip: description: '' type: string payeeName: description: '' type: string currencyCode: description: '' type: string net: description: '' type: string gross: description: '' type: string totalTaxes: description: '' type: string totalDeductions: description: '' type: string ytdNet: description: '' type: string ytdGross: description: '' type: string ytdTaxes: description: '' type: string ytdDeductions: description: '' type: string fedWitholding: description: '' type: string federalType: description: must be 2020_w4, pre_2020_w4, or null type: string enum: - 2020_w4 - pre_2020_w4 twoJobs: description: boolean value type: string dependentsAmount: description: float value type: string otherIncome: description: float value type: string deductionsAmount: description: float value type: string stateWithholding: description: '' type: string localWithholding: description: '' type: string additionalFed: description: '' type: string additionalState: description: '' type: string additionalLocal: description: '' type: string taxState: description: '' type: string taxLocal: description: '' type: string wages: description: '' type: array items: type: object properties: externalWageId: type: string wageDescription: type: string wageAmount: type: string ytdWageAmount: type: string wageRate: type: string hours: type: string taxes: description: '' type: array items: type: object properties: externalTaxId: type: string taxDescription: type: string taxAmount: type: string ytdTaxAmount: type: string deductions: description: '' type: array items: type: object properties: externalDeductionId: type: string deductionDescription: type: string deductionAmount: type: string ytdDeductionAmount: type: string deposits: description: '' type: array items: type: object properties: depositOrder: type: string depositAmount: type: string maskedAccountNumber: type: string accountType: type: string TimeTrackingRecord: title: Time Tracking Record type: object properties: timeTrackingId: description: >- A unique identifier for the record. Use this ID to adjust or delete these hours. It can be any ID you use to track the record up to 36 characters in length. (i.e. UUID). type: string maximum: 36 employeeId: description: The ID of the employee. type: integer divisionId: description: '[Optional] The ID of the division for the employee.' type: integer departmentId: description: '[Optional] The ID of the department for the employee.' type: integer jobTitleId: description: '[Optional] The ID of the job title for the employee.' type: integer payCode: description: >- [Optional] Only necessary if the payroll provider requires a pay code type: string maximum: 50 dateHoursWorked: description: >- The date the hours were worked. Please use the ISO-8601 date format YYYY-MM-DD. type: string payRate: description: >- [Optional] The rate of pay. e.g. $15.00/hour should use 15.00 here. Only necessary if the payroll provider requires a pay rate. type: number format: float rateType: description: >- The type of hours - regular or overtime. Please use either "REG" or "OT" here. type: string hoursWorked: description: The number of hours worked. type: number format: float jobCode: description: '[Optional] A job code.' type: integer jobData: description: >- [Optional] A list of up to four 20 characters max job numbers in comma delimited format with no spaces. type: string required: - timeTrackingId - employeeId - dateHoursWorked - rateType - hoursWorked TimeTrackingRecordBulk: title: Time Tracking Record Bulk type: array items: $ref: '#/components/schemas/TimeTrackingRecord' TimesheetEntry: title: Timesheet Entry type: object properties: id: description: ID of the entry. type: integer employeeId: description: ID of the employee associated with the entry. type: integer type: description: type of the entry. enum: - hour - clock type: string start: description: >- Timestamp, in UTC, of when the employee clocked in. ISO 8601 format. Property can be null. type: string end: description: >- Timestamp, in UTC, of when the employee clocked out. ISO 8601 format. Property can be null. type: string timezone: description: The timezone the clock entry was recorded in. Property can be null. type: string hours: description: >- The number of hours for the entry. This value has a maximum scale of 4. Property can be null. type: number note: description: The note associated with the entry. Property can be null. type: string projectInfo: $ref: '#/components/schemas/TimeTrackingProjectInfo' approved: description: Approval status of the timesheet for the entry. type: boolean approvedAt: description: >- Timestamp, in UTC, of when the timesheet for the entry was approved. Property can be null. type: string TimeTrackingProjectInfo: title: Time Tracking Project Info type: object properties: project: $ref: '#/components/schemas/TimeTrackingProject' task: $ref: '#/components/schemas/TimeTrackingTask' TimeTrackingProject: title: Time Tracking Project type: object properties: id: description: ID of the project. type: integer name: description: Name of the project. type: string TimeTrackingTask: title: Time Tracking Task type: object properties: id: description: ID of the task. type: integer name: description: Name of the task. type: string TimeTrackingProjectWithTasks: title: Time tracking project with tasks. type: object properties: id: description: ID of the project. type: integer name: description: Name of the project. type: string tasks: description: A list of time tracking tasks for the project. type: array items: $ref: '#/components/schemas/TimeTrackingTask' TimeTrackingProjectsWithTasks: title: List of time tracking projects with tasks. type: array items: $ref: '#/components/schemas/TimeTrackingProjectWithTasks' TimeTrackingProjectWithTasksAndEmployeeIds: title: Time tracking project with tasks and list of employee IDs. type: object properties: id: description: ID of the project. type: integer name: description: Name of the project. type: string tasks: description: A list of time tracking tasks for the project. type: array items: $ref: '#/components/schemas/TimeTrackingTask' employeeIds: description: >- A list of employee IDs that can log time for this project. If not present, all employees can log time for the project. type: array items: type: integer Goal: title: Employee Goal type: object properties: title: description: The goal title. type: string maxLength: 1024 description: description: The goal description. type: string maxLength: 65535 id: description: >- A unique identifier for the record. Use this ID to reference this goal. type: integer percentComplete: description: The goal completion percentage (0 - 100). type: integer alignsWithOptionId: description: The option ID that aligns with this goal. type: string sharedWithEmployeeIds: description: >- Employee IDs of employees with whom the goal is shared. All goal owners are considered "shared with". type: array items: type: integer maximum: 50 dueDate: description: The goal due date in YYYY-mm-dd format. type: string completionDate: description: The date the goal was completed. type: number format: float required: - id - title NewGoal: title: Add Employee Goal type: object properties: title: description: '[Required] The goal title.' type: string maxLength: 1024 description: description: '[Optional] The goal description.' type: string maxLength: 65535 percentComplete: description: >- [Optional] The goal completion percentage (0 - 100). If completionDate is set, this value must be 100. type: integer alignsWithOptionId: description: '[Optional] The option ID that aligns with this goal.' type: string sharedWithEmployeeIds: description: >- [Required] Employee IDs of employees with whom the goal is shared. All goal owners are considered "shared with". This must include the employee for whom the goal is created. type: array items: type: integer maximum: 50 dueDate: description: '[Required] The goal due date in YYYY-mm-dd format.' type: string completionDate: description: >- [Optional] The date the goal was completed. If date is set, and no milestones are contained within this goal, percentComplete must be set to 100. If this goal does contain milestones, completion date cannot be set. type: number format: float milestones: description: '[Optional] Milestones for the goal.' type: array items: $ref: '#/components/schemas/Milestone' required: - title - dueDate - sharedWithEmployeeIds UpdateGoalV1_1: title: Update Employee Goal With Milestones type: object properties: title: description: '[Required] The goal title.' type: string maxLength: 1024 description: description: '[Optional] The goal description.' type: string maxLength: 65535 alignsWithOptionId: description: '[Optional] The option ID that aligns with this goal.' type: string sharedWithEmployeeIds: description: >- [Required] Employee IDs of employees with whom the goal is shared. All goal owners are considered "shared with". This must include the employee for whom the goal is created. type: array items: type: integer maximum: 50 dueDate: description: '[Required] The goal due date in YYYY-mm-dd format.' type: string milestonesEnabled: description: >- [Optional] A flag indicating whether or not milestones are enabled for this goal. Setting this flag to false will delete all existing milestones for this goal. type: boolean deletedMilestoneIds: description: '[Optional] Ids of all the milestones to be deleted with the update.' type: array items: type: integer milestones: description: '[Optional] All milestones to be added to the goal with this update.' type: array items: $ref: '#/components/schemas/Milestone' required: - title - dueDate - sharedWithEmployeeIds Milestone: title: Goal Milestone type: object properties: title: description: '[Required] The title of the milestone.' type: string startValue: description: >- [Optional] Initial value of the milestone. Rounded to the nearest hundredth. If this value is set, endValue must also be set. type: number format: float endValue: description: >- [Optional] End goal value for the milestone. Rounded to the nearest hundredth. If this value is set, startValue must also be set. type: number format: float required: - title Location: type: object properties: description: description: Description of the location type: string id: description: The ID of the location type: integer name: description: Name of the location type: string city: description: City of the location type: string state: $ref: '#/components/schemas/State' country: $ref: '#/components/schemas/Country' zipcode: description: The ZIP or postal code of the location type: string addressLine1: description: The first address line of the location type: string addressLine2: description: The second address line of the location type: string phone: description: The phone number of the location type: string State: type: object properties: id: description: The ID of the state type: integer name: description: The name of the state type: string abbrev: description: The abbreviation of the state type: string iso_code: description: The ISO standard code of the state type: string Country: type: object properties: id: description: The ID of the country type: integer name: description: The name of the country type: string iso_code: description: The ISO standard code of the country type: string HiringLead: type: object properties: employeeId: description: The employeeId of the potential hiring lead type: integer preferredFullName: description: The preferred full name of the potential hiring lead type: string TrainingType: type: object properties: description: description: Description for the training. type: string id: description: The ID of the training type: integer name: description: Name of the training type. type: string renewable: description: If true, training will be renewed based off of frequency. type: boolean frequency: description: >- The frequency is the (optional) amount of months between renewing trainings. Not valid if training are not renewable. type: integer dueFromHireDate: description: >- Number of days before the training is due for new hires. Not valid if training is not required. type: integer required: description: Is this a required training? type: integer category: $ref: '#/components/schemas/TrainingCategory' linkUrl: description: Optional URL that can be included with a training. type: string allowEmployeesToMarkComplete: description: >- Allows all employees who can view the training to be able to mark it complete. type: boolean TrainingCategory: description: The category ID and name type: object properties: id: type: integer name: type: string TrainingRecord: type: object properties: id: description: The ID of the training record. type: integer employeeId: description: The ID of the employee associated with the training. type: integer completed: description: Completed is a date in the format yyyy-mm-dd. type: string notes: description: Notes left on the training record. type: string instructor: description: Name of the instructor. type: string credits: description: What was credited for the training record. type: number hours: description: Hours associated with the training record. type: number cost: description: The currency and cost for the training record. type: string type: description: The training type ID. type: integer NewWebHook: title: Add Webhook type: object properties: name: description: The name of the webhook. example: My new webhook type: string maxLength: 1024 monitorFields: description: A list of fields to monitor. type: array items: type: string example: - firstName - lastName postFields: description: >- A list of fields to post to the webhook url. Field ID or alias: external name type: object additionalProperties: description: External name to post field to type: string example: firstName: Name lastName: Surname dateOfBirth: DOB url: description: The url the webhook should send data to (must begin with https://). pattern: ^http:// type: string format: description: The format the webhook should use (json - default, form-encoded). enum: - json - form-encoded type: string frequency: description: How often the webhook could fire. type: object properties: hour: description: >- The hour to potentially fire (0-23, null to potentially fire every hour) minimum: 0 maximum: 23 type: integer minute: description: >- The minute to potentially fire (0-59, null to potentially fire every minute) minimum: 0 maximum: 59 type: integer day: description: >- The day to potentially fire (1-31, null to potentially fire every day) minimum: 1 maximum: 31 type: integer month: description: >- The month to potentially fire (1-12, null to potentially fire every month) minimum: 1 maximum: 12 type: integer limit: description: >- To limit how often to potentially fire a webhook, and maximum amount of records to send type: object properties: times: description: The amount of records to send type: integer seconds: description: The minimum amount of seconds between requests type: integer includeCompanyDomain: description: If set to true, the company domain will be added to the header. type: boolean example: true required: - name - monitorFields - postFields - url WebHookResponse: title: Add Webhook Response type: object properties: id: description: The id of the webhook. example: 4 type: integer name: description: The name of the webhook. type: string example: Example Webhook maxLength: 1024 created: description: timestamp of creation example: '2021-09-20 22:58:01' type: string lastSent: description: timestamp of last webhook sent example: '2021-09-20 22:58:01' type: string monitorFields: description: A list of fields to monitor. type: array items: type: string example: - firstName - lastName postFields: description: >- A list of fields to post to the webhook url. Field ID or alias: external name type: object additionalProperties: description: External name to post field to type: string example: firstName: Name lastName: Surname dateOfBirth: DOB url: description: The url the webhook should send data to. example: https://www.example.com type: string format: description: The format the webhook should use (json, form-encoded). example: json type: string frequency: description: How often the webhook could fire. type: object properties: hour: description: The hour to potentially fire. example: 12 type: integer minute: description: The minute to potentially fire example: 56 type: integer day: description: The day to potentially fire example: 24 type: integer month: description: The month to potentially fire example: 7 limit: description: >- To limit how often to potentially fire a webhook, and maximum amount of records to send type: object properties: times: description: The amount of records to send example: 15 type: integer seconds: description: The minimum amount of seconds between requests example: 500 type: integer includeCompanyDomain: description: If set to true, the company domain will be added to the header. type: boolean example: true WebHookLogResponse: title: Webhook Log Response type: object properties: webhookId: description: The id of the webhook. example: 5 type: integer url: description: The URL of the webhook. type: string example: https://exmaple.com lastAttempted: description: timestamp of last time the webhook was sent example: '2021-09-20 22:58:01' type: string lastSuccess: description: timestamp of last time the webhook was sent successfully example: '2021-09-20 22:58:01' type: string failureCount: description: Count of how many times this call failed since last success type: integer example: 0 status: description: Status code of last request example: 200 type: integer employeeIds: description: A list of employee ids that were changed. type: array items: type: integer example: - 1 - 2 Webhook400Error: title: Webhook 403 error type: object properties: errors: type: array items: type: object properties: error: type: string example: errors: - error: Invalid request body issues: - problem one - problem two - … Webhook403Error: title: Webhook 403 error type: object properties: errors: type: array items: type: object properties: error: type: string example: errors: - error: 'You do not have access to webhook ID: 5' Webhook404Error: title: Webhook 404 error type: object properties: errors: type: array items: type: object properties: error: type: string example: errors: - error: 'No webhook was found with ID: 7.' Webhook500Error: title: Webhook 500 error type: object properties: errors: type: array items: type: object properties: error: type: string example: errors: - error: >- Sorry for the inconvenience, please try again later or contact BambooHR. BenefitsAddNewCompanyBenefitRequest: allOf: - $ref: '#/components/schemas/CompanyBenefitRequest' - type: object required: - benefitType - deductionTypeId - startDate - meetAcaMin - minEssentialCoverage - endDate BenefitsUpdateCompanyBenefitRequest: allOf: - $ref: '#/components/schemas/CompanyBenefitRequest' - type: object required: - companyBenefitName - startDate - benefitType BenefitsAddEmployeeBenefitRequest: allOf: - $ref: '#/components/schemas/EmployeeBenefit' - type: object required: - employeeId - companyBenefitId - enrollmentStatus - effectiveDate - companyBenefitName - startDate - benefitType HoursEditHourRecordRequest: type: object properties: timeTrackingId: description: >- The time tracking id is the id that was used to track the record up to 36 characters in length. (i.e. UUID). type: string hoursWorked: description: >- The updated number of hours worked. e.g. if Employee A worked 8.0 hours originally and decided they only worked 6.0, please send 6.0 here not -2.0. type: number format: float required: - timeTrackingId - hoursWorked TimeTrackingApproveEmployeeTimesheetsRequest: type: object required: - lastChanged - timesheets properties: lastChanged: description: UNIX timestamp for last change to timesheet type: integer example: 1624485787 timesheets: description: Array of timesheet objects that contain the timesheet id type: array items: type: object properties: timesheetId: description: The id of the timesheet type: integer example: 100 TimeTrackingApproveEmployeeTimesheetsRequest1: type: object properties: clockOuts: description: Array of clock out information type: array items: type: object required: - timesheetId - end - date properties: timesheetId: description: The id of the timesheet type: integer example: 100 end: description: 24 hour format (hh:mm) for clock out time type: string example: '17:30' date: description: Date of the clock out. Date string format (YYYY-MM-DD) type: string example: '2021-04-23' TimeTrackingGetTimesheetsByIdsRequest: type: object required: - timesheets properties: timesheets: description: Comma separated list of timesheet ids type: string example: 10, 11, 12 TimeTrackingClockInEmployeeRequest: type: object properties: start: description: The start time for the clock in. In 24 hour format HH:MM type: string example: '13:00' timezone: description: The timezone associated with the clock in. type: string example: America/Denver note: description: The note associated with the clock in type: string example: Back from lunch. projectId: description: The id of the project associated with the clock in type: integer example: 3 taskId: description: The id of the task associated with the clock in type: integer example: 2 clockInLocation: type: object properties: latitude: type: number format: double example: 40.332729 longitude: type: number format: double example: -111.729235 accuracy: description: Accuracy in meters of the clock in location type: integer example: 2 address: type: string example: 123 Main TimeTrackingClockOutEmployeeRequest: type: object properties: clockOutLocation: type: object properties: latitude: type: number format: double example: 40.332729 longitude: type: number format: double example: -111.729235 accuracy: description: Accuracy in meters of the clock out location type: integer example: 2 address: type: string example: 123 Main TimeTrackingStoreDailyEntriesRequest: type: object properties: entries: type: array items: type: object properties: employeeId: description: employee id for the time entry type: integer example: 40342 date: description: date of the time entry type: string example: '2021-06-25' hours: description: The number of hours for the time entry. type: number example: 7.5 format: float dailyEntryId: description: The id of the daily entry if updating an existing entry type: integer example: 1 projectId: description: The id of the project associated with the time entry type: integer example: 1 taskId: description: The id of the task associated with the time entry type: integer example: 2 note: type: string TimeTrackingDeleteClockEntriesRequest: type: object properties: clockEntryIds: type: array example: - 10 - 11 - 12 items: type: integer TimeTrackingStoreClockEntriesRequest: type: object properties: entries: type: array items: type: object properties: employeeId: description: employee id for the time entry type: integer example: 40342 date: description: date of the time entry type: string example: '2021-06-25' start: description: 24 hour format (hh:mm) for start time type: string example: '13:00' end: description: 24 hour format (hh:mm) for end time type: string example: '17:00' clockEntryId: description: id of existing time entry. used when updating time entry type: integer example: 101 projectId: description: The id of the project associated with the time entry type: integer example: 1 taskId: description: The id of the task associated with the time entry type: integer example: 2 note: type: string example: Note for time entry TimeTrackingClockOutEmployeeAtSpecificTimeRequest: type: object properties: datetime: description: 'Date time for clock out in atom format. ' type: string example: '2020-12-16T17:28:00-05:00' timezone: description: Timezone of the time entry type: string example: America/Denver employeeId: description: The employeeId for the time entry. type: integer example: 40342 TimeTrackingEditClockedInEntryDataRequest: type: object properties: start: description: The start time for the clock in. In 24 hour format HH:MM type: string example: '13:00' timezone: description: The timezone associated with the clock in. type: string example: America/Denver note: description: The note associated with the clock in type: string example: Back from lunch. projectId: description: The id of the project associated with the clock in type: integer example: 3 taskId: description: The id of the task associated with the clock in type: integer example: 2 clockInLocation: type: object properties: latitude: type: number format: double example: 40.332729 longitude: type: number format: double example: -111.729235 accuracy: description: Accuracy in meters of the clock in location type: integer example: 2 address: type: string example: 123 Main clockOutLocation: type: object properties: latitude: type: number format: double example: 40.332729 longitude: type: number format: double example: -111.729235 accuracy: description: Accuracy in meters of the clock in location type: integer example: 2 address: type: string example: 123 Main TimeTrackingPrivateBetaAddEditClockEntriesRequest: type: object required: - entries properties: entries: type: array items: type: object required: - employeeId - date - start - end properties: employeeId: description: Unique identifier for the employee. type: integer date: description: Date for the timesheet entry. Must be in YYYY-MM-DD format. type: string example: '2024-01-31' start: description: >- Start time for the timesheet entry. Local time for the employee. Must be in hh:mm 24 hour format. type: string example: '09:00' end: description: >- End time for the timesheet entry. Local time for the employee. Must be in hh:mm 24 hour format. type: string example: '17:00' id: description: >- The ID of an existing timesheet entry. This can be specified to edit an existing entry. type: integer projectId: description: The ID of the project to associate with the timesheet entry. type: integer taskId: description: The ID of the task to associate with the timesheet entry. type: integer note: description: Optional note to associate with the timesheet entry. type: string TimeTrackingPrivateBetaDeleteTimeSheetEntriesRequest: type: object required: - clockEntryIds properties: clockEntryIds: type: array items: type: integer TimeTrackingPrivateBetaAddEditHourEntriesRequest: type: object required: - hours properties: hours: type: array items: type: object required: - employeeId - date - hours properties: employeeId: description: Unique identifier for the employee. type: integer date: description: Date for the timesheet entry. Must be in YYYY-MM-DD format. type: string example: '2024-01-31' hours: description: Hours worked for this timesheet entry. type: number example: 3.5 id: description: >- The ID of an existing timesheet entry. This can be specified to edit an existing entry. type: integer projectId: description: The ID of the project to associate with the timesheet entry. type: integer taskId: description: The ID of the task to associate with the timesheet entry. type: integer note: description: Optional note to associate with the timesheet entry. type: string TimeTrackingPrivateBetaDeleteHourEntriesRequest: type: object required: - hourEntryIds properties: hourEntryIds: type: array items: type: integer TimeTrackingPrivateBetaAddTimesheetClockInRequest: type: object properties: projectId: description: >- id of the time tracking project that should be associated with the timesheet entry. Required if taskId is specified. type: integer example: 10 taskId: description: >- id of the time tracking task that should be associated with the timesheet entry. type: integer example: 25 note: description: The note that should be associated with the timesheet entry type: string example: Back from lunch. TimeTrackingPrivateBetaCreateProjectTaskRequest: type: object required: - name properties: name: description: Name of the project. type: string example: Project A billable: description: >- Indicates if the project is billable. Defaults to true if not provided. type: boolean allowAllEmployees: description: >- Indicates if all employees can log time for this project. Defaults to true if not provided. type: boolean employeeIds: description: A list of employee IDs that can log time for this project. type: array items: type: integer hasTasks: description: >- Indicates if the project has tasks. Defaults to false if not provided. type: boolean tasks: description: List of tasks to create and associate with the project. type: array items: type: object required: - name properties: name: description: Name of the task. type: string billable: description: >- Indicates if the tasks is billable. Defaults to true if not provided. type: boolean GoalsUpdateGoalSharingRequest: type: object properties: sharedWithEmployeeIds: type: array items: type: integer GoalsUpdateProgressRequest: type: integer GoalsCloseGoalRequest: type: string GoalsGetAlignableOptionsRequest: type: string GoalsCreateCommentRequest: type: string ApplicantTrackingAddApplicationCommentRequest: type: object required: - type - comment properties: type: description: Always the value "comment". type: string default: comment pattern: ^comment$ comment: description: The comment being posted. type: string example: type: comment comment: I really like this applicant ApplicantTrackingChangeApplicantStatusRequest: type: object required: - status properties: status: description: Associates a status id with an application. type: integer example: status: '2' ApplicantTrackingCreateNewApplicationRequest: type: object properties: firstName: description: The first name of the candidate. type: string lastName: description: The last name of the candidate. type: string email: description: The email address of the candidate. type: string phoneNumber: description: The phone number of the candidate. type: string source: description: The source of the candidate application, e.g. LinkedIn, Indeed, etc. type: string jobId: description: The id of the job opening for the candidate application. type: integer address: description: The street address of the candidate. type: string city: description: The city of the candidate. type: string state: description: >- The state or province of the candidate. Accepts state name, abbreviation, or ISO code. type: string zip: description: The zip code or postal code of the candidate. type: string country: description: The country of the candidate. Accepts country name or ISO code. type: string linkedinUrl: description: The LinkedIn profile url of the candidate. type: string dateAvailable: description: >- The available start date of the candidate with the format YYYY-MM-DD. type: string desiredSalary: description: The desired salary of the candidate. type: string referredBy: description: The person or entity that referred the candidate. type: string websiteUrl: description: The personal website, blog, or online portfolio of the candidate. type: string highestEducation: description: The highest completed education level of the candidate. type: string enum: - GED or Equivalent - High School - Some College - College - Associates - College - Bachelor of Arts - College - Bachelor of Fine Arts - College - Bachelor of Science - College - Master of Arts - College - Master of Fine Arts - College - Master of Science - College - Master of Business Administration - College - Doctorate - Medical Doctor - Other collegeName: description: The college or university of the candidate. type: string references: description: A list of references supplied by the candidate. type: string resume: description: Resume of the candidate. type: string format: binary coverLetter: description: Cover letter of the candidate. type: string format: binary required: - firstName - lastName - jobId ApplicantTrackingCreateNewJobOpeningRequest: type: object properties: postingTitle: description: The posting title of the job opening. type: string jobStatus: description: The status of the job opening. type: string enum: - Draft - Open - On Hold - Filled - Canceled hiringLead: description: >- The employee id (from the v1/applicant_tracking/hiring_leads endpoint) of the hiring lead for the job opening. type: integer department: description: The department of the job opening. type: string employmentType: description: >- The type of employment offered in the job opening, e.g. Full-Time, Part-Time, Contractor, etc. type: string minimumExperience: description: >- The minimum experience level that qualifies a candidate for the job opening. type: string enum: - Entry-level - Mid-level - Experienced - Manager/Supervisor - Senior Manager/Supervisor' - Executive - Senior Executive compensation: description: The pay rate or compensation for the job opening. type: string jobLocation: description: >- The location id (from the v1/applicant_tracking/locations endpoint) of the job opening. Omit this parameter for a remote job location. type: integer jobDescription: description: The long-form text description of the job opening. type: string applicationQuestionResume: description: >- Whether the job opening application has a standard question for resume (true) or not (false) or if uploading a resume is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionAddress: description: >- Whether the job opening application has a standard question for address (true) or not (false) or if entering an address is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionLinkedinUrl: description: >- Whether the job opening application has a standard question for LinkedIn profile url (true) or not (false) or if entering a LinkedIn profile url is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionDateAvailable: description: >- Whether the job opening application has a standard question for availability date (true) or not (false) or if entering an availability date is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionDesiredSalary: description: >- Whether the job opening application has a standard question for desired salary (true) or not (false) or if entering a desired salary is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionCoverLetter: description: >- Whether the job opening application has a standard question for cover letter (true) or not (false) or if uploading a cover letter is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionReferredBy: description: >- Whether the job opening application has a standard question for referred by (true) or not (false) or if entering referred by is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionWebsiteUrl: description: >- Whether the job opening application has a standard question for website url (true) or not (false) or if entering a website url is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionHighestEducation: description: >- Whether the job opening application has a standard question for highest education (true) or not (false) or if entering highest education is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionCollege: description: >- Whether the job opening application has a standard question for college (true) or not (false) or if entering a college is mandatory (required). type: string enum: - 'true' - 'false' - Required applicationQuestionReferences: description: >- Whether the job opening application has a standard question for references (true) or not (false) or if entering references is mandatory (required). type: string enum: - 'true' - 'false' - Required internalJobCode: description: The internal job code for the job opening. type: string required: - postingTitle - jobStatus - hiringLead - employmentType - jobDescription TrainingTypeAdditionRequest: type: object required: - name - required properties: description: description: Description for the training. type: string name: description: Name of the new training type. type: string frequency: description: >- The frequency is the (optional) amount of months between renewing trainings. Not valid if training are not renewable. type: integer default: '12' renewable: description: >- Renewable is optional but if you are setting it to true you must pass a frequency which is the months between renewals. type: boolean category: description: >- The category is optional and you can pass either a category id or a category name. type: object properties: id: description: Category ID type: integer example: 3 name: description: Category Name type: string example: First Aid Trainings accuracy: description: Accuracy in meters of the clock in location type: integer example: 2 address: description: Address... type: string example: 123 Main required: description: Is this a required training? type: boolean dueFromHireDate: description: >- Number of days before the training is due for new hires. Not valid unless training is required. type: integer default: '30' linkUrl: description: Optional URL that can be included with a training. type: string allowEmployeesToMarkComplete: description: >- Allows all employees who can view the training to be able to mark it complete. type: boolean default: false example: name: My New Training frequency: '12' renewable: true category: id: 3 name: CustomApiCategoryName2 required: false dueFromHireDate: unit: day amount: '30' TrainingUpdateTypeRequest: type: object required: - name - required properties: description: description: Description for the training. type: string name: description: Name of the training type. type: string frequency: description: >- The frequency is the (optional) amount of months between renewing trainings. Not valid if training are not renewable. type: integer default: '12' renewable: description: >- Renewable is optional but if you are setting it to true you must pass a frequency. type: boolean category: description: >- Category is optional and passing an empty value will remove the category from the training type. Passing a name will assign the training type to the new training category. type: object properties: id: description: Category ID type: integer example: 3 name: description: Category Name type: string example: CustomApiCategoryName2 accuracy: description: Accuracy in meters of the clock in location type: integer example: 2 address: description: Address... type: string example: 123 Main required: description: Is this a required training? type: boolean dueFromHireDate: description: >- Number of days before the training is due for new hires. Not valid unless training is required. type: integer default: '30' linkUrl: description: Optional URL that can be included with a training. type: string allowEmployeesToMarkComplete: description: >- Allows all employees who can view the training to be able to mark it complete. type: boolean default: false example: name: My Edited Training frequency: '12' renewable: true category: name: Existing or new training category required: false dueFromHireDate: unit: day amount: '30' TrainingAddCategoryRequest: type: object required: - name properties: name: description: Name of the new training category. type: string example: name: My New Training Category TrainingUpdateCategoryRequest: type: object required: - name properties: name: description: Name of the training category. type: string example: name: My Training Category TrainingAddEmployeeTrainingRecordRequest: type: object required: - completed - type properties: completed: description: Completed is a required field and must be in yyyy-mm-dd format. type: string format: date pattern: ([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])) cost: properties: currency: type: string cost: type: number instructor: type: string hours: type: number credits: type: number notes: type: string type: description: This must be an existing training type id. type: integer default: 0 example: completed: '2016-05-25' cost: currency: USD amount: '100.00' instructor: Bob Jones hours: '16' credits: '4' notes: sample note type: '4' TrainingUpdateEmployeeTrainingRecordRequest: type: object required: - completed properties: completed: description: >- Completed is the only required field and must be in yyyy-mm-dd format. The other parameters are optional. type: string pattern: ([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])) cost: properties: currency: type: string cost: type: number instructor: type: string hours: type: number credits: type: number notes: type: number example: completed: '2016-05-25' cost: currency: USD amount: '100.00' instructor: Bob Jones hours: '16' credits: '4' notes: sample note EmployeesGetDirectoryResponse: type: object properties: id: description: The ID of the employee type: string additionalProperties: true EmployeesGetDirectory200Response: type: object properties: id: description: The ID of the employee type: string additionalProperties: true TabularDataDeleteRowResponse: type: object properties: sucess: type: boolean BenefitsListCompanyBenefitsResponse: type: array items: $ref: '#/components/schemas/CompanyBenefitResponse' BenefitsListCompanyBenefitTypesResponse: type: array items: $ref: '#/components/schemas/CompanyBenefitType' BenefitsListEmployeeBenefitsResponse: type: array items: $ref: '#/components/schemas/EmployeeBenefit' TimeTrackingPrivateBetaListTimesheetEntriesResponse: type: array items: $ref: '#/components/schemas/TimesheetEntry' TimeTrackingPrivateBetaAddEditClockEntriesResponse: type: array items: $ref: '#/components/schemas/TimesheetEntry' TimeTrackingPrivateBetaAddEditHourEntriesResponse: type: array items: $ref: '#/components/schemas/TimesheetEntry' TimeTrackingPrivateBetaListEmployeeProjectsResponse: type: array items: $ref: '#/components/schemas/TimeTrackingProjectsWithTasks' GoalsGetAllAggregateInfoResponse: type: object properties: canAlign: description: The selected user can align goals with other users. example: false type: boolean canCreateGoals: description: The selected user can create a goal. type: boolean example: true filters: description: All the goals of the user seperated by filter. type: array items: type: object properties: id: description: Id of the filter. type: string example: status-inProgress name: description: The name of the filter. type: string example: In Progress count: description: Count of the goals with that filter. type: integer example: 3 selectedFilter: description: The id of the current selected filter. type: string example: status-inProgress goals: description: All goals in selected filter. type: array items: type: object properties: title: description: Title of the goal. type: string example: Complete Documentation Epic description: description: A description of the goal. type: string example: Document every endpoint for the goals API. id: description: The id of the goal. type: integer example: 4 percentComplete: description: A percentage (1-100) that denotes how complete the goal is. type: integer example: 100 alignsWithOptionId: type: integer sharedWithEmployeeIds: description: Ids of the employees that have access to this goal. type: array items: type: integer example: 89 dueDate: description: The due date of the goal. type: string format: date example: '2021-12-17' completionDate: description: The date the goal was completed. type: string format: date example: '2021-12-16' status: description: The status of the goal. type: string example: in_progress persons: description: A list of people with access to the goal. type: array items: type: object properties: employeeId: description: The id of this employee. type: integer example: 4353 userId: description: The user id of the person if applicable. type: integer example: 45 displayFirstName: description: First name of the person. type: string example: Tim lastName: description: Last name of the person. type: string example: Johnson photoUrl: description: url of the user profile image. type: string example: https://tim.johnson.jpg comments: description: A list of how many comments belong to each goal. type: array items: type: object properties: goalId: description: The goalId that the comments are linked to. type: integer example: 25 commentCount: description: How many comments are linked to the goal type: integer example: 2 GoalsGetAllAggregateInfo200Response: type: object properties: canAlign: description: The selected user can align goals with other users. example: false type: boolean canCreateGoals: description: The selected user can create a goal. type: boolean example: true filters: description: All the goals of the user seperated by filter. type: array items: type: object properties: id: description: Id of the filter. type: string example: status-inProgress name: description: The name of the filter. type: string example: In Progress count: description: Count of the goals with that filter. type: integer example: 3 actions: description: What actions a user can preform on this kind of goal. type: object properties: canCloseGoal: description: Can a goal be closed in this state. type: boolean example: true canEditGoal: description: Can a goal be edited in this state. type: boolean example: true canEditGoalProgressBar: description: Can a goal progress bar be edited in this state. type: boolean example: true canReopenGoal: description: Can a goal be reopened in this state. type: boolean example: true canShareGoal: description: Can a goal be shared in this state. type: boolean example: true selectedFilter: description: The id of the current selected filter. type: string example: status-inProgress goals: description: All goals in selected filter. type: array items: type: object properties: title: description: Title of the goal. type: string example: Complete Documentation Epic description: description: A description of the goal. type: string example: Document every endpoint for the goals API. id: description: The id of the goal. type: integer example: 4 percentComplete: description: A percentage (1-100) that denotes how complete the goal is. type: integer example: 100 alignsWithOptionId: type: integer sharedWithEmployeeIds: description: Ids of the employees that have access to this goal. type: array items: type: integer example: 89 dueDate: description: The due date of the goal. type: string format: date example: '2021-12-17' completionDate: description: The date the goal was completed. type: string format: date example: '2021-12-16' status: description: The status of the goal. type: string example: in_progress persons: description: A list of people with access to the goal. type: array items: type: object properties: employeeId: description: The id of this employee. type: integer example: 4353 userId: description: The user id of the person if applicable. type: integer example: 45 displayFirstName: description: First name of the person. type: string example: Tim lastName: description: Last name of the person. type: string example: Johnson photoUrl: description: url of the user profile image. type: string example: https://tim.johnson.jpg comments: description: A list of how many comments belong to each goal. type: array items: type: object properties: goalId: description: The goalId that the comments are linked to. type: integer example: 25 commentCount: description: How many comments are linked to the goal type: integer example: 2 GoalsGetAllAggregateInfo200Response1: type: object properties: canAlign: description: The selected user can align goals with other users. example: false type: boolean canCreateGoals: description: The selected user can create a goal. type: boolean example: true filters: description: All the goals of the user seperated by filter. type: array items: type: object properties: id: description: Id of the filter. type: string example: status-inProgress name: description: The name of the filter. type: string example: In Progress count: description: Count of the goals with that filter. type: integer example: 3 actions: description: What actions a user can preform on this kind of goal. type: object properties: canCloseGoal: description: Can a goal be closed in this state. type: boolean example: true canEditGoal: description: Can a goal be edited in this state. type: boolean example: true canEditGoalProgressBar: description: Can a goal progress bar be edited in this state. type: boolean example: true canReopenGoal: description: Can a goal be reopened in this state. type: boolean example: true canShareGoal: description: Can a goal be shared in this state. type: boolean example: true selectedFilter: description: The id of the current selected filter. type: string example: status-inProgress goals: description: All goals in selected filter. type: array items: type: object properties: title: description: Title of the goal. type: string example: Complete Documentation Epic description: description: A description of the goal. type: string example: Document every endpoint for the goals API. id: description: The id of the goal. type: integer example: 4 percentComplete: description: A percentage (1-100) that denotes how complete the goal is. type: integer example: 100 alignsWithOptionId: type: integer sharedWithEmployeeIds: description: Ids of the employees that have access to this goal. type: array items: type: integer example: 89 dueDate: description: The due date of the goal. type: string format: date example: '2021-12-17' completionDate: description: The date the goal was completed. type: string format: date example: '2021-12-16' status: description: The status of the goal. type: string example: in_progress milestones: description: >- All milestones for the individual goal. This array will not exist if milestones are not selected for this goal. type: array items: description: An individual milestone. type: object properties: title: description: The title of the milestone. type: string example: Sell 15 Doohickeys id: description: The id of the milestone. type: integer example: 2 employeeGoalId: description: The id of the goal which encompasses this milestone. type: integer example: 12 currentValue: description: >- The current value for a numeric milestone. This number will be rounded to the nearest hundreds. On the creation of a numeric milestone this value will automatically be set to the start value of the milestone. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 7 startValue: description: >- The starting value for a numeric milestone. This number will be rounded to the nearest hundreds. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 0 endValue: description: >- The end goal for a numeric milestone. This number will be rounded to the nearest hundreds. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 15 completedDateTime: description: >- The date and time in which the goal has been completed. If the goal is not completed the value will be null. type: string format: Date-Time example: '2024-07-12T14:50:46Z' lastUpdateDateDateTime: description: The date and time in which the goal was last updated. type: string format: Date-Time example: '2023-07-12T14:50:46Z' lastUpdateUserId: description: The ID of the user who last updated this milestone. type: integer example: 24 actions: description: >- Actions that are available to a goal with milestones enabled. This object will not appear on a goal without milestones. type: object properties: canEditGoalProgressBar: description: Can the user edit the progress bar of this goal. type: boolean example: false canEditGoalMilestoneProgressBar: description: >- can the user edit the progress of a milestone in this goal. type: boolean example: true persons: description: A list of people with access to the goal. type: array items: type: object properties: employeeId: description: The id of this employee. type: integer example: 4353 userId: description: The user id of the person if applicable. type: integer example: 45 displayFirstName: description: First name of the person. type: string example: Tim lastName: description: Last name of the person. type: string example: Johnson photoUrl: description: url of the user profile image. type: string example: https://tim.johnson.jpg comments: description: A list of how many comments belong to each goal. type: array items: type: object properties: goalId: description: The goalId that the comments are linked to. type: integer example: 25 commentCount: description: How many comments are linked to the goal type: integer example: 2 GoalsGetGoalAggregateInfoResponse: type: object properties: goal: description: The selected goal object type: object properties: title: description: Title of the goal. type: string example: Complete Documentation Epic description: description: A description of the goal. type: string example: Document every endpoint for the goals API. id: description: The id of the goal. type: integer example: 4 percentComplete: description: A percentage (1-100) that denotes how complete the goal is. type: integer example: 100 alignsWithOptionId: type: integer sharedWithEmployeeIds: description: Ids of the employees that have access to this goal. type: array items: type: integer example: 89 dueDate: description: The due date of the goal. type: string format: date example: '2021-12-17' completionDate: description: The date the goal was completed. type: string format: date example: '2021-12-16' status: description: The status of the goal. type: string example: in_progress milestones: description: >- All milestones for the individual goal. This array will not exist if milestones are not selected for this goal. type: array items: description: An individual milestone. type: object properties: title: description: The title of the milestone. type: string example: Sell 15 Doohickeys id: description: The id of the milestone. type: integer example: 2 employeeGoalId: description: The id of the goal which encompasses this milestone. type: integer example: 12 currentValue: description: >- The current value for a numeric milestone. This number will be rounded to the nearest hundreds. On the creation of a numeric milestone this value will automatically be set to the start value of the milestone. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 7 startValue: description: >- The starting value for a numeric milestone. This number will be rounded to the nearest hundreds. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 0 endValue: description: >- The end goal for a numeric milestone. This number will be rounded to the nearest hundreds. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 15 completedDateTime: description: >- The date and time in which the goal has been completed. If the goal is not completed the value will be null. type: string format: Date-Time example: '2024-07-12T14:50:46Z' lastUpdateDateDateTime: description: The date and time in which the goal was last updated. type: string format: Date-Time example: '2023-07-12T14:50:46Z' lastUpdateUserId: description: The ID of the user who last updated this milestone. type: integer example: 24 actions: description: >- Actions that are available to a goal with milestones enabled. This object will not appear on a goal without milestones. type: object properties: canEditGoalProgressBar: description: Can the user edit the progress bar of this goal. type: boolean example: false canEditGoalMilestoneProgressBar: description: can the user edit the progress of a milestone in this goal. type: boolean example: true canAlign: description: The selected user can align goals with other users. type: boolean example: false canCreateGoals: description: The selected user can create a goal. type: boolean example: true alignsWithOptions: description: All possible goals that this goal could be aligned with. type: array items: type: object properties: title: description: >- Title of the goal that the selected goal could be aligned with. type: string example: Get all team goals for January complete. id: description: Id of the goal that the selected goal could be aligned with. type: integer example: 8 comments: description: Comments linked to selected goal. type: array items: type: object properties: id: description: Id of the comment. type: integer example: 2 authorUserId: description: Id of the author of the comment. type: integer example: 1534 createdAt: description: The date and time that the comment was created. type: string format: date-time example: '2022-05-23T17:32:42Z' text: description: The actual text of the comment. type: string example: This goal is taking longer than I thought. canEdit: description: Can the comment be edited. type: boolean example: true canDelete: description: Can the comment be deleted. type: boolean example: true persons: description: A list of people with access to the goal. type: array items: type: object properties: employeeId: description: The id of this employee. type: integer example: 4353 userId: description: The user id of the person if applicable. type: integer example: 45 displayFirstName: description: First name of the person. type: string example: Tim lastName: description: Last name of the person. type: string example: Johnson photoUrl: description: url of the user profile image. type: string example: https://tim.johnson.jpg GoalsUpdateGoalSharingResponse: type: object properties: goal: description: The selected goal object type: object properties: title: description: Title of the goal. type: string example: Complete Documentation Epic description: description: A description of the goal. type: string example: Document every endpoint for the goals API. id: description: The id of the goal. type: integer example: 4 percentComplete: description: A percentage (1-100) that denotes how complete the goal is. type: integer example: 100 alignsWithOptionId: type: integer sharedWithEmployeeIds: description: Ids of the employees that have access to this goal. type: array items: type: integer example: 89 dueDate: description: The due date of the goal. type: string format: date example: '2021-12-17' completionDate: description: The date the goal was completed. type: string format: date example: '2021-12-16' status: description: The status of the goal. type: string example: in_progress GoalsUpdateProgressResponse: type: object properties: goal: description: The selected goal object type: object properties: title: description: Title of the goal. type: string example: Complete Documentation Epic description: description: A description of the goal. type: string example: Document every endpoint for the goals API. id: description: The id of the goal. type: integer example: 4 percentComplete: description: A percentage (1-100) that denotes how complete the goal is. type: integer example: 100 alignsWithOptionId: type: integer sharedWithEmployeeIds: description: Ids of the employees that have access to this goal. type: array items: type: integer example: 89 dueDate: description: The due date of the goal. type: string format: date example: '2021-12-17' completionDate: description: The date the goal was completed. type: string format: date example: '2021-12-16' status: description: The status of the goal. type: string example: in_progress GoalsStatusCountResponse: type: object properties: filters: description: All the goals of the user seperated by filter. type: array items: type: object properties: id: description: Id of the filter. type: string example: status-inProgress name: description: The name of the filter. type: string example: In Progress count: description: Count of the goals with that filter. type: integer example: 3 GoalsCountPerStatusResponse: type: object properties: filters: description: All the goals of the user seperated by filter. type: array items: type: object properties: id: description: Id of the filter. type: string example: status-inProgress name: description: The name of the filter. type: string example: In Progress count: description: Count of the goals with that filter. type: integer example: 3 actions: description: What actions a user can preform on this kind of goal. type: object properties: canCloseGoal: description: Can a goal be closed in this state. type: boolean example: true canEditGoal: description: Can a goal be edited in this state. type: boolean example: true canEditGoalProgressBar: description: Can a goal progress bar be edited in this state. type: boolean example: true canReopenGoal: description: Can a goal be reopened in this state. type: boolean example: true canShareGoal: description: Can a goal be shared in this state. type: boolean example: true GoalsGetEmployeeGoalsResponse: type: object properties: goals: description: All goals of the selected employee type: array items: description: An individual goal type: object properties: title: description: Title of the goal. type: string example: Complete Documentation Epic description: description: A description of the goal. type: string example: Document every endpoint for the goals API. id: description: The id of the goal. type: integer example: 4 percentComplete: description: A percentage (1-100) that denotes how complete the goal is. type: integer example: 100 alignsWithOptionId: type: integer sharedWithEmployeeIds: description: Ids of the employees that have access to this goal. type: array items: type: integer example: 89 dueDate: description: The due date of the goal. type: string format: date example: '2021-12-17' completionDate: description: The date the goal was completed. type: string format: date example: '2021-12-16' status: description: The status of the goal. type: string example: in_progress milestones: description: >- All milestones for the individual goal. This array will not exist if milestones are not selected for this goal. type: array items: description: An individual milestone. type: object properties: title: description: The title of the milestone. type: string example: Sell 15 Doohickeys id: description: The id of the milestone. type: integer example: 2 employeeGoalId: description: The id of the goal which encompasses this milestone. type: integer example: 12 currentValue: description: >- The current value for a numeric milestone. This number will be rounded to the nearest hundreds. On the creation of a numeric milestone this value will automatically be set to the start value of the milestone. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 7 startValue: description: >- The starting value for a numeric milestone. This number will be rounded to the nearest hundreds. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 0 endValue: description: >- The end goal for a numeric milestone. This number will be rounded to the nearest hundreds. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 15 completedDateTime: description: >- The date and time in which the goal has been completed. If the goal is not completed the value will be null. type: string format: Date-Time example: '2024-07-12T14:50:46Z' lastUpdateDateDateTime: description: The date and time in which the goal was last updated. type: string format: Date-Time example: '2023-07-12T14:50:46Z' lastUpdateUserId: description: The ID of the user who last updated this milestone. type: integer example: 24 actions: description: >- Actions that are available to a goal with milestones enabled. This object will not appear on a goal without milestones. type: object properties: canEditGoalProgressBar: description: Can the user edit the progress bar of this goal. type: boolean example: false canEditGoalMilestoneProgressBar: description: >- can the user edit the progress of a milestone in this goal. type: boolean example: true GoalsCreateEmployeeGoalResponse: type: object properties: {} example: {} GoalsUpdateEmployeeGoalResponse: type: object properties: {} example: {} GoalsUpdateEmployeeGoalV11Response: type: object properties: {} example: {} GoalsCloseGoalResponse: type: object properties: goal: description: An individual goal type: object properties: title: description: Title of the goal. type: string example: Complete Documentation Epic description: description: A description of the goal. type: string example: Document every endpoint for the goals API. id: description: The id of the goal. type: integer example: 4 percentComplete: description: A percentage (1-100) that denotes how complete the goal is. type: integer example: 100 alignsWithOptionId: type: integer sharedWithEmployeeIds: description: Ids of the employees that have access to this goal. type: array items: type: integer example: 89 dueDate: description: The due date of the goal. type: string format: date example: '2021-12-17' completionDate: description: The date the goal was completed. type: string format: date example: '2021-12-16' status: description: The status of the goal. type: string example: in_progress milestones: description: >- All milestones for the individual goal. This array will not exist if milestones are not selected for this goal. type: array items: description: An individual milestone. type: object properties: title: description: The title of the milestone. type: string example: Sell 15 Doohickeys id: description: The id of the milestone. type: integer example: 2 employeeGoalId: description: The id of the goal which encompasses this milestone. type: integer example: 12 currentValue: description: >- The current value for a numeric milestone. This number will be rounded to the nearest hundreds. On the creation of a numeric milestone this value will automatically be set to the start value of the milestone. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 7 startValue: description: >- The starting value for a numeric milestone. This number will be rounded to the nearest hundreds. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 0 endValue: description: >- The end goal for a numeric milestone. This number will be rounded to the nearest hundreds. If the milestone is a simple checkbox milestone, this value will always be null. type: number example: 15 completedDateTime: description: >- The date and time in which the goal has been completed. If the goal is not completed the value will be null. type: string format: Date-Time example: '2024-07-12T14:50:46Z' lastUpdateDateDateTime: description: The date and time in which the goal was last updated. type: string format: Date-Time example: '2023-07-12T14:50:46Z' lastUpdateUserId: description: The ID of the user who last updated this milestone. type: integer example: 24 actions: description: >- Actions that are available to a goal with milestones enabled. This object will not appear on a goal without milestones. type: object properties: canEditGoalProgressBar: description: Can the user edit the progress bar of this goal. type: boolean example: false canEditGoalMilestoneProgressBar: description: can the user edit the progress of a milestone in this goal. type: boolean example: true GoalsReopenGoalResponse: type: object properties: {} example: {} ApplicantTrackingGetJobSummariesResponse: type: array items: type: object properties: title: type: object properties: id: type: number example: 7153 label: type: string example: Draftsperson postedDate: type: string example: '2017-11-30 16:59:40' location: type: object properties: id: type: number example: 5094 label: type: string example: St. Louis address: type: object properties: description: type: string nullable: true x-konfig-null-placeholder: true name: type: string nullable: true x-konfig-null-placeholder: true addressLine1: type: string nullable: true x-konfig-null-placeholder: true addressLine2: type: string nullable: true x-konfig-null-placeholder: true city: type: string example: Lehi state: type: string example: Utah zipcode: type: string example: '84043' country: type: string example: United States phoneNumber: type: string nullable: true x-konfig-null-placeholder: true department: type: object properties: id: type: number example: 367 label: type: string example: Engineering status: type: object properties: id: type: number example: 1 label: type: string example: Open newApplicantsCount: type: number example: 1 activeApplicantsCount: type: number example: 3 totalApplicantsCount: type: number example: 4 id: type: number example: 2 postingUrl: type: string example: string example: - title: id: 7153 label: Draftsperson postedDate: '2017-11-30 16:59:40' location: id: 5094 label: St. Louis address: description: null name: null addressLine1: null addressLine2: null city: Lehi state: Utah zipcode: '84043' country: United States phoneNumber: null department: id: 367 label: Engineering status: id: 1 label: Open newApplicantsCount: 1 activeApplicantsCount: 3 totalApplicantsCount: 4 id: 2 postingUrl: string - title: id: 16222 label: HR Specialist postedDate: '2017-12-08 15:29:44' location: id: 5094 label: St. Louis address: description: null name: null addressLine1: null addressLine2: null city: Lehi state: Utah zipcode: '84043' country: United States phoneNumber: null department: id: 17813 label: HR status: id: 1 label: Open newApplicantsCount: 5 activeApplicantsCount: 5 totalApplicantsCount: 5 id: 3 postingUrl: string ApplicantTrackingListApplicationsResponse: type: object properties: paginationComplete: type: boolean example: true applications: type: array items: type: object properties: id: type: number example: 0 appliedDate: type: string example: string status: type: object properties: id: type: number example: 0 label: type: string example: string rating: type: number example: 0 applicant: type: object properties: id: type: number example: 0 firstName: type: string example: string lastName: type: string example: string avatar: type: string example: string job: type: object properties: title: type: object properties: id: type: number example: 0 label: type: string example: string id: type: number example: 0 nextPageUrl: type: string example: string example: paginationComplete: true applications: - id: 0 appliedDate: string status: id: 0 label: string rating: 0 applicant: id: 0 firstName: string lastName: string avatar: string job: title: id: 0 label: string id: 0 nextPageUrl: string ApplicantTrackingGetApplicationDetailsResponse: type: object properties: id: type: number example: 4 appliedDate: type: string example: '2018-02-09 19:43:31' status: type: object properties: id: type: number example: 19 label: type: string example: Moved changedByUser: type: object properties: id: type: number example: 2292 firstName: type: string example: Jim lastName: type: string example: Gang avatar: type: string nullable: true x-konfig-null-placeholder: true rating: type: number example: 5 resumeFileId: type: number example: 10 coverLetterFileId: type: number example: 5 movedTo: type: object properties: applicationId: type: number example: 5 job: type: object properties: title: type: object properties: id: type: number example: 254 label: type: string example: HR Specialist id: type: number example: 16222 movedFrom: type: string nullable: true x-konfig-null-placeholder: true alsoAppliedToCount: type: number example: 2 duplicateApplicationCount: type: number example: 1 referredBy: type: string nullable: true x-konfig-null-placeholder: true desiredSalary: type: string example: '80000' commentCount: type: number example: 1 emailCount: type: number example: 0 questionsAndAnswers: type: array items: type: object properties: question: type: object properties: id: type: number example: 1 label: type: string example: What's your favorite color answer: type: object properties: id: type: number example: 22 label: type: string example: blue applicant: type: object properties: email: type: string example: test@bamboohr.com phoneNumber: type: string example: '8019942392' address: type: object properties: addressLine1: type: string example: 12 w 12 s addressLine2: type: string nullable: true x-konfig-null-placeholder: true city: type: string example: Lehi state: type: string example: UT zipcode: type: string example: '84005' country: type: string example: United States linkedinUrl: type: string nullable: true x-konfig-null-placeholder: true websiteUrl: type: string nullable: true x-konfig-null-placeholder: true availableStartDate: type: string nullable: true x-konfig-null-placeholder: true education: type: object properties: institution: type: string example: Arizona University level: type: object properties: id: type: number example: 10 label: type: string example: Master of Science id: type: number example: 35 firstName: type: string example: Jimmy lastName: type: string example: Jackson avatar: type: string nullable: true x-konfig-null-placeholder: true job: type: object properties: title: type: object properties: id: type: number example: 6477 label: type: string example: CEO hiringLead: type: object properties: employeeId: type: number example: 40340 firstName: type: string example: Josh lastName: type: string example: Smith avatar: type: string nullable: true x-konfig-null-placeholder: true jobTitle: type: object properties: id: type: number example: 205 label: type: string example: Head Engineer id: type: number example: 1 example: id: 4 appliedDate: '2018-02-09 19:43:31' status: id: 19 label: Moved changedByUser: id: 2292 firstName: Jim lastName: Gang avatar: null rating: 5 resumeFileId: 10 coverLetterFileId: 5 movedTo: applicationId: 5 job: title: id: 254 label: HR Specialist id: 16222 movedFrom: null alsoAppliedToCount: 2 duplicateApplicationCount: 1 referredBy: null desiredSalary: '80000' commentCount: 1 emailCount: 0 questionsAndAnswers: - question: id: 1 label: What's your favorite color answer: id: 22 label: blue applicant: email: test@bamboohr.com phoneNumber: '8019942392' address: addressLine1: 12 w 12 s addressLine2: null city: Lehi state: UT zipcode: '84005' country: United States linkedinUrl: null websiteUrl: null availableStartDate: null education: institution: Arizona University level: id: 10 label: Master of Science id: 35 firstName: Jimmy lastName: Jackson avatar: null job: title: id: 6477 label: CEO hiringLead: employeeId: 40340 firstName: Josh lastName: Smith avatar: null jobTitle: id: 205 label: Head Engineer id: 1 ApplicantTrackingListStatusesResponse: type: array items: type: object properties: description: type: string nullable: true x-konfig-null-placeholder: true code: type: string example: PHONE enabled: type: boolean example: true id: type: string example: '2' manageable: type: boolean example: true name: type: string example: Phone Screened translatedName: type: string example: Phone Screened example: - description: null code: PHONE enabled: true id: 2X manageable: true name: Phone Screened translatedName: Phone Screened ApplicantTrackingGetCompanyLocationsResponse: type: array items: type: object properties: location: $ref: '#/components/schemas/Location' ApplicantTrackingGetHiringLeadsResponse: type: array items: type: object properties: hiringLead: $ref: '#/components/schemas/HiringLead' ApplicantTrackingCreateNewApplicationResponse: type: array items: type: object properties: result: type: string example: success candidateId: type: number example: 42 example: - result: success candidateId: 42 ApplicantTrackingCreateNewJobOpeningResponse: type: array items: type: object properties: result: type: string example: success jobOpeningId: type: number example: 11 example: - result: success jobOpeningId: 11 TrainingGetTypesResponse: type: array items: type: object properties: trainingId: $ref: '#/components/schemas/TrainingType' TrainingCategoryListResponse: type: array items: type: object properties: categoryId: $ref: '#/components/schemas/TrainingCategory' TrainingListEmployeeTrainingsResponse: type: array items: type: object properties: trainingId: $ref: '#/components/schemas/TrainingRecord' WebhooksListMonitorFieldsResponse: type: object properties: fields: type: array items: type: object properties: id: type: integer name: type: string alias: type: string EmployeesGetEmployeeDataResponse: type: object properties: id: description: The ID of the employee type: string additionalProperties: true EmployeesGetEmployeeData200Response: type: object properties: id: description: The ID of the employee type: string additionalProperties: true WebhooksGetUserListResponse: type: object properties: webhooks: type: array items: type: object properties: id: description: The ID of the webhook. type: string example: '1' name: description: The name of the webhook. type: string created: description: The creation date of the webhook. type: string format: date-time example: '2021-09-20 22:58:01' lastSent: description: The date the webhook was last sent. type: string format: date-time example: '2021-09-21 12:00:00' url: description: The url of the webhook. type: string WebhooksAddNewWebhookResponse: type: object properties: id: description: The id of the webhook. example: 4 type: integer name: description: The name of the webhook. type: string example: Example Webhook maxLength: 1024 created: description: timestamp of creation example: '2021-09-20 22:58:01' type: string lastSent: description: timestamp of last webhook sent example: '2021-09-20 22:58:01' type: string monitorFields: description: A list of fields to monitor. type: array items: type: string example: - firstName - lastName postFields: description: >- A list of fields to post to the webhook url. Field ID or alias: external name type: object additionalProperties: description: External name to post field to type: string example: firstName: Name lastName: Surname dateOfBirth: DOB url: description: The url the webhook should send data to. example: https://www.example.com type: string format: description: The format the webhook should use (json, form-encoded). example: json type: string frequency: description: How often the webhook could fire. type: object properties: hour: description: The hour to potentially fire. example: 12 type: integer minute: description: The minute to potentially fire example: 56 type: integer day: description: The day to potentially fire example: 24 type: integer month: description: The month to potentially fire example: 7 limit: description: >- To limit how often to potentially fire a webhook, and maximum amount of records to send type: object properties: times: description: The amount of records to send example: 15 type: integer seconds: description: The minimum amount of seconds between requests example: 500 type: integer privateKey: description: >- The private key which can be used to verify that the webhook is secure (uses HMAC-SHA256) type: string includeCompanyDomain: description: If set to true, the company domain will be added to the header. type: boolean example: true WebhooksAddNewWebhook403Response: type: object properties: errors: type: array items: type: object properties: error: type: string example: errors: - error: Permission denied to the following fields monitorFields: - id: '123' name: alias or id postFields: - id: 123X name: alias or id unknownFields: - id: 123X name: alias or id duplicatePostString: - fieldName WebhooksUpdateWebhookByIdResponse: type: object properties: errors: type: array items: type: object properties: error: type: string example: errors: - error: Permission denied to the following fields monitorFields: - id: 123X name: alias or id postFields: - id: 123X name: alias or id unknownFields: - id: 123X name: alias or id duplicatePostString: - fieldName - error: 'You do not have access to webhook ID: 5' security: - auth: [] - basic: [] x-readme: explorer-enabled: true proxy-enabled: true _id: 5c5c82c3dc49780051f2d292