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

# Update Time Tracking Shift Differential

`PATCH /api/v1/time-tracking/shift-differentials/{id}`

Partially updates a time tracking shift differential identified by its ID.

OAuth Scopes: time_tracking:shift_differentials.write

## Path parameters

- `id` integer, required

## Request body

- ShiftDifferentialUpdateTimeTrackingShiftDifferentialV1 — Request body for partially updating a time tracking shift differential. At least one property must be provided.
  - `name` string
  - `rate` string — Non-negative decimal string with at most two decimal places.
  - `rateType` 'AMOUNT' | 'PERCENT'
  - `allowAllEmployees` boolean — If true, every time-tracked employee is assigned. Ignored when `employeeIds` is provided.
  - `employeeIds` integer[] — Specific internal employee IDs to assign. Minimum 1 entry required when provided. Takes precedence over `allowAllEmployees`.
  - `times` object[] — Time windows when this differential applies. Replaces all existing time windows when provided.
    - `startDay` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY', required
    - `endDay` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY', required
    - `start` string, required
    - `end` string, required
  - `archived` boolean — When true, archives the shift differential. When false, unarchives it.

## Response `200`

Shift differential updated successfully.

- ShiftDifferentialTimeTrackingShiftDifferentialV1 — A shift differential rule with time windows and employee assignments.
  - `id` integer — The ID of the shift differential.
  - `name` string — The name of the shift differential rule.
  - `rate` string — The differential pay rate as a decimal string.
  - `rateType` 'AMOUNT' | 'PERCENT' — How the rate is applied.
  - `allowAllEmployees` boolean — Whether all time & attendance employees are assigned.
  - `times` ShiftDifferentialTimeTrackingShiftDifferentialTimeV1[] — Time windows when this differential applies.
    - `id` integer — The ID of the time window.
    - `startDay` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY' — Start day of the time window.
    - `endDay` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY' — End day of the time window.
    - `start` string — Start time in HH:MM format (24-hour).
    - `end` string — End time in HH:MM format (24-hour).
  - `employeeIds` integer[] — Employee IDs assigned to this shift differential.
  - `createdAt` string, date-time, nullable — ISO 8601 timestamp when the shift differential was created.
  - `updatedAt` string, date-time, nullable — ISO 8601 timestamp when the shift differential was last updated.
  - `archivedAt` string, date-time, nullable — ISO 8601 timestamp when the shift differential was archived.
  - `deletedAt` string, date-time, nullable — ISO 8601 timestamp when the shift differential was deleted.

## Other responses

- `400` — Malformed request body.
- `401` — Unauthorized. Missing or invalid authentication.
- `403` — Forbidden. Insufficient permissions.
- `404` — Shift differential not found.
- `409` — Conflict. A shift differential with the provided name already exists.
- `422` — Validation error (e.g., invalid `rate`, invalid `times`, no fields provided).

---

[API](https://skmtc.net/bamboohr/apis/bamboohr-api.md) · [All operations](https://skmtc.net/bamboohr/apis/bamboohr-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bamboohr/bamboohr-api/revisions/19ebf391a399/schema)
