---
title: "Replace ShiftOverrides for an employee."
method: PUT
path: "/schedule/api/shift-overrides"
tags: ["ShiftOverrides"]
---

# Replace ShiftOverrides for an employee.

`PUT /schedule/api/shift-overrides`

Replace all ShiftOverrides for a given employee within the specified date range.

<Note>This endpoint uses a PUT semantic: all existing ShiftOverrides for the employee within
the `startsAt.between` range will be removed and replaced by the ones provided in the
request body. If none exist, then the provided ShiftOverrides will simply be created.</Note>

<Warning>Both `employee.id` and `startsAt.between` query parameters are required.</Warning>

## Query parameters

- `employee.id` integer, required
- `startsAt.between` string, required

## Request body

- ShiftOverrideCandidate[]
  - `employeeId` integer, required — The ID of the employee this override applies to.
  - `position` 'firstHalf' | 'secondHalf' | 'fullDay', required
  - `startsAt` string, date-time, required — Start date-time of the override.
  - `duration` ShiftOverrideDuration, required — The duration of the override.
    - `unit` 'days' | 'hours', required — The unit in which the duration value is expressed.
    - `value` number, required — The numeric duration value.
    - `iso` string, required — ISO 8601 duration representation.
  - `nature` 'worked' | 'off' | 'partTime' | 'weeklyRest', required — The nature of the shift override. - `worked`: the employee is working. - `off`: the employee is off. - `partTime`: part-time day. - `weeklyRest`: weekly rest day.
  - `comment` string, nullable — Optional comment associated with the override.

## Response `200`

OK

- object
  - `items` ShiftOverride[]
    - `id` integer, required — Unique identifier of the ShiftOverride.
    - `employee` object, required — The employee this override applies to.
      - `id` integer
    - `position` 'firstHalf' | 'secondHalf' | 'fullDay', required
    - `startsAt` string, date-time, required — Start date-time of the override.
    - `endsAt` string, date-time, required — End date-time of the override.
    - `duration` ShiftOverrideDuration, required — The duration of the override.
      - `unit` 'days' | 'hours', required — The unit in which the duration value is expressed.
      - `value` number, required — The numeric duration value.
      - `iso` string, required — ISO 8601 duration representation.
    - `workCycleUnit` 'day' | 'hour' | 'time', required — The unit of the work cycle for this override. - `day`: duration expressed in days. - `hour`: duration expressed in hours. - `time`: duration expressed in hours with a specific start time.
    - `nature` 'worked' | 'off' | 'partTime' | 'weeklyRest', required — The nature of the shift override. - `worked`: the employee is working. - `off`: the employee is off. - `partTime`: part-time day. - `weeklyRest`: weekly rest day.
    - `comment` string, nullable — Optional comment associated with the override.
    - `isLocked` boolean, required — Whether the override is locked (cannot be modified).
    - `createdAt` string, date-time, required — Date-time when the override was created.
    - `createdBy` object, nullable — The user who created the override.
      - `id` integer
    - `lastUpdatedAt` string, date-time, required — Date-time when the override was last updated.
    - `lastUpdatedBy` object, nullable — The user who last updated the override.
      - `id` integer

## Other responses

- `400` — Problem
- `401` — Problem
- `500` — Problem

---

[API](https://skmtc.net/luccasoftware/apis/lucca-expenses.md) · [All operations](https://skmtc.net/luccasoftware/apis/lucca-expenses/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/luccasoftware/lucca-expenses/revisions/110f9897756c/schema)
