Scheduling
Public API

Approve a Shift Claim

Changed on

A manager approves a pending claim, assigning the claimant to the shift at once, with no publish. The assignment is checked again against current schedules, since they may have changed since the claim was made. A success body is the approved claim only, with no evaluation data. When approval fills the last open spot, the other pending claims on the shift may now be declined with shift_filled; they are not in this response, and GET /shift-claims shows them. A claim the caller cannot see answers 404 exactly as a claim that does not exist, and a caller who can see it but may not edit the shift gets 403. shift_not_claimable means the claim's shift is no longer published. Approving fails with open_shifts_disabled while Open Shifts is off.

OAuth Scopes: scheduling:shifts.write

post/api/v1/scheduling/shift-claims/{claimId}/approve

Request

Path parameters

claimIdstring uuid required

The ID of the claim to approve.

Response

The claim was approved and the claimant is assigned to the shift.

idstring uuid required

The unique ID of this claim.

shiftIdstring uuid required

The ID of the shift being claimed.

employeeIdinteger required

The ID of the employee who claimed the shift.

status'pending' | 'approved' | 'declined' | 'withdrawn' required

Where the claim stands. Only a pending claim can be withdrawn. A first-come-first-served claim is never pending because it is approved when it is created.

resolutionReason'manager_denied' | 'shift_filled' | 'shift_deleted' | 'claiming_disabled' | 'assignment_blocked' nullable required

Why the claim was declined. Kept separate from status so that being denied and the shift filling are distinguishable.

createdAtstring date-time required

UTC timestamp when the claim was received. This is the single source of truth for queue order.

updatedAtstring date-time nullable required

UTC timestamp when the claim was last updated.

Example response

{
  "id": "019aa0a1-1c44-7b2e-9f10-2ad0eb6038aa",
  "shiftId": "019aa09f-0712-74cb-9186-8ad0eb6038dc",
  "employeeId": 49283,
  "status": "pending",
  "createdAt": "2026-08-25T16:04:12Z",
  "updatedAt": "2026-08-25T16:04:12Z"
}

Changes