---
title: "Find department shifts based on search parameters. Deleted shifts are not returned. Sort by `id`, `departmentId`, `name`, `startTime`, `endTime`, `unlimitedCapacity`, `maxDailyNewJobs` or `createdUtc`, ignoring case. Shifts that tie on the sort field are ordered by `id` ascending. Without a sort field, results are ordered by creation date, newest first, whatever the sort direction."
method: POST
path: "/api/department-shifts/list"
tags: ["Department Shift"]
---

# Find department shifts based on search parameters. Deleted shifts are not returned. Sort by \`id\`, \`departmentId\`, \`name\`, \`startTime\`, \`endTime\`, \`unlimitedCapacity\`, \`maxDailyNewJobs\` or \`createdUtc\`, ignoring case. Shifts that tie on the sort field are ordered by \`id\` ascending. Without a sort field, results are ordered by creation date, newest first, whatever the sort direction.

`POST /api/department-shifts/list`

## Request

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

## Query parameters

- `Sort.Field` string
- `Sort.Dir` 'ascending' | 'descending': Specify sorting direction.
- `Skip` integer
- `Take` integer

## Request body

- DepartmentShiftRequestFindParameters: Parameters used for searching/finding department shifts. Filters combine with AND.
  - `ids` string[], nullable: Filter shifts to those with one of these ids.
  - `departmentIds` string[], nullable: Filter shifts to those belonging to one of these departments.
  - `name` string, nullable: Filter shifts whose name contains this text, ignoring case.

## Response `200`

List of department shifts matching the filters

- DepartmentShiftDto[]
  - `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`: The sort field, paging or filter parameters were invalid

## Changes

- **2026-10-05** `c3bdc499d639`: 8 breaking
  - the `departmentIds` request property's minItems was increased to `1` (media type: application/json-patch+json)
  - the `departmentIds` request property's minItems was increased to `1` (media type: application/json)
  - the `departmentIds` request property's minItems was increased to `1` (media type: text/json)
  - the `departmentIds` request property's minItems was increased to `1` (media type: application/*+json)
  - …4 more
- **2026-10-01** `54698ab06b67`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/changes/api/department-shifts/list/post.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)
