Time Tracking
Public API

Update Configuration

Changed on

Updates a time tracking configuration using JSON Merge Patch (RFC 7396) semantics: only the properties present in the body are applied, omitted properties are unchanged, and an explicit null clears a nullable property. Both GLOBAL and GROUP configurations can be updated. Content-Type: application/merge-patch+json is preferred because it names those semantics, but application/json is also accepted.

OAuth Scopes: time_tracking:configurations.write

patch/api/v1/time-tracking/configurations/{id}

Request

Path parameters

idinteger required

The time tracking configuration ID.

Request body

namestring

The configuration name. Unique per company.

timesheetType'CLOCK' | 'SINGLE' | 'MULTIPLE' | 'HOUR'

How time is logged.

workWeekStartsOn'SUNDAY' | 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY'

Day of week the work week starts.

approverType'REPORTS_TO' | 'SPECIFIC_PERSON'

Who approves timesheets. Moving away from SPECIFIC_PERSON clears approverUserId server-side.

approverUserIdinteger nullable

The user ID of the approver. Required in the same body when setting approverType to SPECIFIC_PERSON; not allowed unless the approver is a specific person.

approvalCutoffstring

Time of day by which timesheets must be approved, in 24-hour HH:MM format.

approvalCutoffDaysinteger

Number of days before the pay date the cutoff applies.

clockInSchedulePolicy'ANYTIME' | 'SHIFT_REQUIRED'

When scheduled employees can clock in.

restrictWebClockActionsboolean

When true, removes the time clock from bamboohr.com for employees in this configuration.

mobileEnabledboolean

When true, employees can log time using the BambooHR mobile app.

geolocationEnabledboolean

When true, employee location is required when clocking in/out via mobile. Stored but has no effect while mobileEnabled is false.

customOvertimeEnabledboolean

When true, the overtime threshold fields are honored. Setting it to false clears all three thresholds server-side.

overtimeDailyHoursstring nullable

Daily overtime threshold in hours. Only allowed while customOvertimeEnabled is true. Decimal string with at most 2 decimals, at least 1 and less than 24.

overtimeDailyDoubleHoursstring nullable

Daily double-overtime threshold in hours. Only allowed while customOvertimeEnabled is true. Decimal string with at most 2 decimals, at least 1 and less than 24.

overtimeWeeklyHoursstring nullable

Weekly overtime threshold in hours. Only allowed while customOvertimeEnabled is true. Decimal string with at most 2 decimals, at least 1 and less than 169.

Example request

{
  "name": "Clock Entry",
  "timesheetType": "CLOCK",
  "workWeekStartsOn": "SUNDAY",
  "approverType": "SPECIFIC_PERSON",
  "approverUserId": 2274,
  "approvalCutoff": "12:00",
  "clockInSchedulePolicy": "ANYTIME",
  "customOvertimeEnabled": true,
  "overtimeDailyHours": "8.00",
  "overtimeDailyDoubleHours": "12.00",
  "overtimeWeeklyHours": "45.00"
}

Response

The updated configuration.

idinteger

The ID of the configuration.

namestring

The configuration name. Unique per company.

type'GLOBAL' | 'GROUP'

The configuration type. Read-only. Exactly one GLOBAL configuration exists per company; all customer-created configurations are GROUP.

timesheetType'CLOCK' | 'SINGLE' | 'MULTIPLE' | 'HOUR'

How time is logged.

workWeekStartsOn'SUNDAY' | 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY'

Day of week the work week starts.

approverType'REPORTS_TO' | 'SPECIFIC_PERSON' nullable

Who approves timesheets. REPORTS_TO is the employee's manager; SPECIFIC_PERSON is a designated user. Null when no valid approver is configured and the settings need to be re-saved.

approverUserIdinteger nullable

The user ID of the approver. Populated when approverType is SPECIFIC_PERSON; null otherwise.

approvalCutoffstring

Time of day by which timesheets must be approved, in 24-hour HH:MM format.

approvalCutoffDaysinteger

Number of days before the pay date the cutoff applies.

clockInSchedulePolicy'ANYTIME' | 'SHIFT_REQUIRED'

When scheduled employees can clock in.

restrictWebClockActionsboolean

When true, removes the time clock from bamboohr.com for employees in this configuration.

mobileEnabledboolean

When true, employees can log time using the BambooHR mobile app.

geolocationEnabledboolean

When true, employee location is required when clocking in/out via mobile. Only meaningful when mobileEnabled is true.

customOvertimeEnabledboolean

When false, standard U.S. and Canada overtime rules apply. When true, the daily/weekly overtime fields are honored.

overtimeDailyHoursstring nullable

Daily overtime threshold in hours as a decimal string. Honored only when customOvertimeEnabled is true; null otherwise.

overtimeDailyDoubleHoursstring nullable

Daily double-overtime threshold in hours as a decimal string. Honored only when customOvertimeEnabled is true; null otherwise.

overtimeWeeklyHoursstring nullable

Weekly overtime threshold in hours as a decimal string. Honored only when customOvertimeEnabled is true; null otherwise.

employeeIdsinteger[]

Read-only array of employee IDs currently enrolled in this configuration.

createdAtstring date-time

ISO 8601 timestamp when the configuration was created.

updatedAtstring date-time nullable

ISO 8601 timestamp when the configuration was last updated.

deletedAtstring date-time nullable

ISO 8601 timestamp when the configuration was soft-deleted. Null for active configurations.

Example response

{
  "id": 3,
  "name": "Clock Entry",
  "type": "GROUP",
  "timesheetType": "CLOCK",
  "workWeekStartsOn": "SUNDAY",
  "approverType": "SPECIFIC_PERSON",
  "approverUserId": 2274,
  "approvalCutoff": "12:00",
  "clockInSchedulePolicy": "ANYTIME",
  "customOvertimeEnabled": true,
  "overtimeDailyHours": "8.00",
  "overtimeDailyDoubleHours": "12.00",
  "overtimeWeeklyHours": "45.00",
  "employeeIds": [
    101,
    102,
    103
  ],
  "createdAt": "2025-06-12T14:57:06Z",
  "updatedAt": "2026-03-10T20:28:42Z"
}

Changes