# Shifts

Manage workspace work-schedule shifts (fixed or flexible, one-off or recurring) and their member assignments. PAID feature — requires the Plus plan and above OR the Shift add-on, plus Owner/Executive Manager role. Times are expressed in each shift's own IANA timezone.

 - [GET /shifts](https://api-docs.webwork-tracker.com/api/shifts/getshifts.md): List workspace work-schedule shifts (paginated). Optional filters: `member_id` (only shifts a given user is assigned to) and a date window via `week` (any date in the ISO week) or `date_from`/`date_to
 - [POST /shifts](https://api-docs.webwork-tracker.com/api/shifts/createshift.md): Create a new shift. `name` must be unique per workspace (max 100). Times are given in the shift's own `timezone` (IANA). For `shift_type: fixed` supply a single `start_time`/`end_time`/`min_hours`; fo
 - [GET /shifts/{shift_id}](https://api-docs.webwork-tracker.com/api/shifts/getshift.md): Retrieve a single shift by its uuid. Owner-scoped. **Access**: PAID feature — Plus plan and above OR the Shift add-on — plus Owner/Executive Manager.
 - [PUT /shifts/{shift_id}](https://api-docs.webwork-tracker.com/api/shifts/updateshift.md): Update a shift. All create fields are accepted (each optional on update); omitted fields keep their current value, including a rotating shift's `work_days`/`rest_days`. Times are interpreted in the su
 - [DELETE /shifts/{shift_id}](https://api-docs.webwork-tracker.com/api/shifts/deleteshift.md): Soft-delete a shift and all rows sharing its uuid. **Access**: PAID feature — Plus plan and above OR the Shift add-on — plus Owner/Executive Manager.
 - [POST /shifts/{shift_id}/assign/{member_id}](https://api-docs.webwork-tracker.com/api/shifts/assignshiftmember.md): Assign a member to a shift. `shift_id` is the shift uuid; `member_id` is a raw integer user id that must belong to the workspace. Assign is **add-only**: re-assigning a member already on the shift ret
 - [DELETE /shifts/{shift_id}/unassign/{member_id}](https://api-docs.webwork-tracker.com/api/shifts/unassignshiftmember.md): Remove a member from a shift. `shift_id` is the shift uuid; `member_id` is a raw integer user id. The shift is **never** deleted by this endpoint: unassigning the **last** remaining member is refused
