---
title: "Update a department shift by id. This is a full replacement: every field is saved from the request, and an omitted field is cleared to its default, so omitting `days`, `simultaneousEquipment` or `availableEquipment` clears them. The shift's department cannot change; a `departmentId` in the body is ignored. Each `availableEquipment` entry must be equipment in the shift's department and can be listed only once, and the server fills `equipmentName` from the equipment. The latest schedule is marked out of date."
method: PUT
path: "/api/department-shifts/{id}"
tags: ["Department Shift"]
---

# Update a department shift by id. This is a full replacement: every field is saved from the request, and an omitted field is cleared to its default, so omitting \`days\`, \`simultaneousEquipment\` or \`availableEquipment\` clears them. The shift's department cannot change; a \`departmentId\` in the body is ignored. Each \`availableEquipment\` entry must be equipment in the shift's department and can be listed only once, and the server fills \`equipmentName\` from the equipment. The latest schedule is marked out of date.

`PUT /api/department-shifts/{id}`

## Request

- Base URL: `https://api.fulcrumpro.com`
- URL: `https://api.fulcrumpro.com/api/department-shifts/{id}`
- Auth: none declared

## Path parameters

- `id` string, required

## Request body

- DepartmentShiftUpdateDto: Details of a department shift to save. An update replaces the whole shift: an omitted or null field is saved as its default, not left as it was. The shift's department cannot be changed.
  - `name` string, required: Name of the shift.
  - `startTime` string, required: Time the shift starts, as a four-digit 24-hour clock value in HHmm format, "0000" to "2359": "0000" is midnight, "0800" is 8:00 AM and "1730" is 5:30 PM.
  - `endTime` string, required: Time the shift ends, in the same HHmm format as `startTime`. An end time earlier than the start time means the shift runs overnight and ends on the next day. An end time equal to the start time is allowed.
  - `days` DepartmentShiftDaysSaveDto: The days of the week a shift is worked. An omitted or null day is saved as false.
    - `monday` boolean, nullable: Monday.
    - `tuesday` boolean, nullable: Tuesday.
    - `wednesday` boolean, nullable: Wednesday.
    - `thursday` boolean, nullable: Thursday.
    - `friday` boolean, nullable: Friday.
    - `saturday` boolean, nullable: Saturday.
    - `sunday` boolean, nullable: Sunday.
  - `simultaneousEquipment` DepartmentShiftDailyCountsSaveDto: A whole-number count of 0 or more for each day of the week. An omitted or null day is saved as 0.
    - `monday` integer, nullable: Count for Monday.
    - `tuesday` integer, nullable: Count for Tuesday.
    - `wednesday` integer, nullable: Count for Wednesday.
    - `thursday` integer, nullable: Count for Thursday.
    - `friday` integer, nullable: Count for Friday.
    - `saturday` integer, nullable: Count for Saturday.
    - `sunday` integer, nullable: Count for Sunday.
  - `unlimitedCapacity` boolean, nullable: When true, the shift has no limit on how many pieces of equipment can run at the same time, and `simultaneousEquipment` is not applied on any day. Omitted or null is saved as false.
  - `maxDailyNewJobs` integer, nullable: Maximum number of new jobs to schedule per shift, 0 or more. Omitted or null means no maximum.
  - `availableEquipment` DepartmentShiftEquipmentSaveDto[], nullable: The equipment available during the shift. Each `equipmentId` must be equipment in the shift's department and can be listed only once. The server fills each `equipmentName` from the equipment. Omitted or null means no equipment, so an update clears the list.
    - `equipmentId` string, required: Id of the equipment. It must be equipment in one of the shift's department's work centers, and it can be listed only once. Please reference the /api/equipment endpoint.
    - `monday` boolean, nullable: Available on Monday. Omitted or null is saved as false.
    - `tuesday` boolean, nullable: Available on Tuesday. Omitted or null is saved as false.
    - `wednesday` boolean, nullable: Available on Wednesday. Omitted or null is saved as false.
    - `thursday` boolean, nullable: Available on Thursday. Omitted or null is saved as false.
    - `friday` boolean, nullable: Available on Friday. Omitted or null is saved as false.
    - `saturday` boolean, nullable: Available on Saturday. Omitted or null is saved as false.
    - `sunday` boolean, nullable: Available on Sunday. Omitted or null is saved as false.

## Response `200`

The updated department shift

- DepartmentShiftDto: A shift worked by a department. A department can have several department shifts.
  - `id` string: Unique id of the shift.
  - `departmentId` string, nullable: Id of the department that works this shift.
  - `name` string, nullable: Name of the shift.
  - `startTime` string, nullable: Time the shift starts, as a four-digit 24-hour clock value in HHmm format: "0000" is midnight, "0800" is 8:00 AM and "1730" is 5:30 PM. Returned exactly as stored.
  - `endTime` string, nullable: Time the shift ends, in the same HHmm format as `startTime`. An end time earlier than the start time means the shift runs overnight and ends on the next day. Returned exactly as stored.
  - `lengthOfShiftInMinutes` integer, nullable: Length of the shift in minutes, from `startTime` to `endTime`. An overnight shift wraps past midnight, so "2200" to "0600" is 480. Equal start and end times give 0. Null when either time is not a valid HHmm value (four digits, hours 00 to 23, minutes 00 to 59).
  - `days` DepartmentShiftDaysDto: A true or false value for each day of the week.
    - `monday` boolean: Monday.
    - `tuesday` boolean: Tuesday.
    - `wednesday` boolean: Wednesday.
    - `thursday` boolean: Thursday.
    - `friday` boolean: Friday.
    - `saturday` boolean: Saturday.
    - `sunday` boolean: Sunday.
  - `simultaneousEquipment` DepartmentShiftDailyCountsDto: A whole-number count for each day of the week.
    - `monday` integer: Count for Monday.
    - `tuesday` integer: Count for Tuesday.
    - `wednesday` integer: Count for Wednesday.
    - `thursday` integer: Count for Thursday.
    - `friday` integer: Count for Friday.
    - `saturday` integer: Count for Saturday.
    - `sunday` integer: Count for Sunday.
  - `unlimitedCapacity` boolean: When true, the shift has no limit on how many pieces of equipment can run at the same time, and `simultaneousEquipment` is not applied on any day.
  - `maxDailyNewJobs` integer, nullable: Maximum number of new jobs to schedule per shift. Null when no maximum is set.
  - `availableEquipment` DepartmentShiftAvailableEquipmentDto[]: The equipment available during the shift and the days of the week each piece is available, ordered by `equipmentId`. Empty when no equipment is assigned.
    - `equipmentId` string, nullable: Id of the equipment. Null for an equipment row saved without an id.
    - `equipmentName` string, nullable: Name of the equipment when it was assigned to the shift.
    - `monday` boolean: Available on Monday.
    - `tuesday` boolean: Available on Tuesday.
    - `wednesday` boolean: Available on Wednesday.
    - `thursday` boolean: Available on Thursday.
    - `friday` boolean: Available on Friday.
    - `saturday` boolean: Available on Saturday.
    - `sunday` boolean: Available on Sunday.
  - `deleted` boolean: Indicates whether this shift has been deleted.

## Other responses

- `400`: Validation issues with input, or an `availableEquipment` entry that is null, repeated or not in the shift's department
- `404`: Department shift did not exist or is deleted

## Changes

- **2026-10-01** `6a28a0af3246`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/changes/api/department-shifts/:id/put.md)

---

[API](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi.md) - [All operations](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/llms.txt) - [OpenAPI document](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/revisions/c9e6f41852d1?raw)
