---
title: "Update Configuration"
method: PATCH
path: "/api/v1/time-tracking/configurations/{id}"
tags: ["Time Tracking", "Public API"]
---

# Update Configuration

`PATCH /api/v1/time-tracking/configurations/{id}`

## Request

- Base URL: `https://companySubDomain.bamboohr.com`
- URL: `https://companySubDomain.bamboohr.com/api/v1/time-tracking/configurations/{id}`
- Auth: one of:
  - HTTP basic
  - OAuth 2
    - Authorization code: `/authorize.php`
    - Token URL: `/token.php` scopes: `time_tracking:configurations.write`
- TypeScript: <https://skmtc.dev/bamboohr/apis/bamboohr-api/docs/api/v1/time-tracking/configurations/:id/patch.ts> (a function with typed inputs; its response is checked against the schema)

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

## Path parameters

- `id` integer, required

## Request body

- TimeTrackingUpdateTimeTrackingConfigurationV1: JSON Merge Patch body for updating a time tracking configuration. Only the properties present are applied; an explicit null clears a nullable property. The read-only `type` and `employeeIds` properties are rejected.
  - `name` string: 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.
  - `approverUserId` integer, 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.
  - `approvalCutoff` string: Time of day by which timesheets must be approved, in 24-hour HH:MM format.
  - `approvalCutoffDays` integer: Number of days before the pay date the cutoff applies.
  - `clockInSchedulePolicy` 'ANYTIME' | 'SHIFT_REQUIRED': When scheduled employees can clock in.
  - `restrictWebClockActions` boolean: When true, removes the time clock from bamboohr.com for employees in this configuration.
  - `mobileEnabled` boolean: When true, employees can log time using the BambooHR mobile app.
  - `geolocationEnabled` boolean: When true, employee location is required when clocking in/out via mobile. Stored but has no effect while mobileEnabled is false.
  - `customOvertimeEnabled` boolean: When true, the overtime threshold fields are honored. Setting it to false clears all three thresholds server-side.
  - `overtimeDailyHours` string, 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.
  - `overtimeDailyDoubleHours` string, 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.
  - `overtimeWeeklyHours` string, 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.

## Response `200`

The updated configuration.

- TimeTrackingTimeTrackingConfigurationV1: A time tracking configuration. Groups of employees with shared time tracking settings are configurations with type GROUP; each company has a single GLOBAL configuration that acts as the default.
  - `id` integer: The ID of the configuration.
  - `name` string: 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.
  - `approverUserId` integer, nullable: The user ID of the approver. Populated when approverType is SPECIFIC_PERSON; null otherwise.
  - `approvalCutoff` string: Time of day by which timesheets must be approved, in 24-hour HH:MM format.
  - `approvalCutoffDays` integer: Number of days before the pay date the cutoff applies.
  - `clockInSchedulePolicy` 'ANYTIME' | 'SHIFT_REQUIRED': When scheduled employees can clock in.
  - `restrictWebClockActions` boolean: When true, removes the time clock from bamboohr.com for employees in this configuration.
  - `mobileEnabled` boolean: When true, employees can log time using the BambooHR mobile app.
  - `geolocationEnabled` boolean: When true, employee location is required when clocking in/out via mobile. Only meaningful when mobileEnabled is true.
  - `customOvertimeEnabled` boolean: When false, standard U.S. and Canada overtime rules apply. When true, the daily/weekly overtime fields are honored.
  - `overtimeDailyHours` string, nullable: Daily overtime threshold in hours as a decimal string. Honored only when customOvertimeEnabled is true; null otherwise.
  - `overtimeDailyDoubleHours` string, nullable: Daily double-overtime threshold in hours as a decimal string. Honored only when customOvertimeEnabled is true; null otherwise.
  - `overtimeWeeklyHours` string, nullable: Weekly overtime threshold in hours as a decimal string. Honored only when customOvertimeEnabled is true; null otherwise.
  - `employeeIds` integer[]: Read-only array of employee IDs currently enrolled in this configuration.
  - `createdAt` string, date-time: ISO 8601 timestamp when the configuration was created.
  - `updatedAt` string, date-time, nullable: ISO 8601 timestamp when the configuration was last updated.
  - `deletedAt` string, date-time, nullable: ISO 8601 timestamp when the configuration was soft-deleted. Null for active configurations.

## Other responses

- `400`: Malformed request body.
- `401`: Unauthorized. Missing or invalid authentication.
- `403`: Forbidden. Insufficient permissions.
- `404`: Configuration not found, or soft-deleted.
- `409`: Conflict. Another configuration already uses the new name.
- `422`: Validation error (e.g., an invalid field value, patching the read-only type or employeeIds, missing approverUserId when setting approverType to SPECIFIC_PERSON, or an overtime threshold set while customOvertimeEnabled is false).

## Changes

- **2026-11-03** `922fc15f43a7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bamboohr/apis/bamboohr-api/changes/api/v1/time-tracking/configurations/:id/patch.md)

---

[API](https://skmtc.dev/bamboohr/apis/bamboohr-api.md) - [All operations](https://skmtc.dev/bamboohr/apis/bamboohr-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bamboohr/apis/bamboohr-api/revisions/922fc15f43a7?raw)
