Bulk Upsert Employee Enrollments
Changed onBulk enables, disables, or reassigns employee enrollments. The body is a top-level JSON array of between 1 and 1000 upsert records; each record requires employeeId and applies the same merge-patch semantics as the single-employee PATCH. Request-level validation (payload shape, record cap, missing employeeId) runs synchronously; the records themselves are applied asynchronously, so the response is 202 with a requestId for log correlation rather than the resulting enrollments. Confirm the final state by reading the enrollments back through GET /api/v1/time-tracking/employees. Per-record processing errors, such as an unknown employeeId or configurationId, do not surface in the response. Send atomic=true to commit the whole batch as one unit instead, in which case any per-record failure aborts the batch and returns 422 with nothing applied.
OAuth Scopes: time_tracking:employees.write
Request
- Base URLhttps://companySubDomain.bamboohr.com
- Auth
- HTTP basic
- or OAuth 2Authorization code/authorize.phpToken URL/token.phpScopestime_tracking:employees.write
- TypeScripthttps://skmtc.dev/bamboohr/apis/bamboohr-api/docs/api/v1/time-tracking/employees/bulk-upsert/post.tsA function with typed inputs. Its response is checked against the schema.
Query parameters
When true, the whole batch is committed as a single transaction and any per-record failure returns 422 with nothing applied. Defaults to false, which keeps the successful records and silently drops the failing ones.
Headers
Optional client-supplied key for safe retries. Replaying the same key with the same body and the same atomic mode returns the original response; reusing it with either changed is a conflict.
Request body
Example request
[
{
"employeeId": 101,
"enabled": true,
"configurationId": 3,
"enabledOn": "2026-06-01"
}
]Response
The batch has been accepted.
Example response
{
"requestId": "8b3e1c2a-6b1f-4f0e-9a2b-2c8f0a1d3e4f",
"message": "Your bulk upsert has been accepted and is being processed. Verify final enrollment state via GET /api/v1/time-tracking/employees."
}Changes
- info
endpoint added
- info