Drop shift
PATCH {{baseUrl}}/shifts/drop
Drops a shift the driver previously claimed. Source: models/shifts.ts drop().
Response fields:
status—ShiftResultStatusenum:Success, orIllegalShiftCancelif a runner tries to drop within 48 hours of the shift start (admins are exempt from that window).shift— the updatedShiftrow (user_idcleared,reasonset).
Request body
Section titled “Request body”{ "id": "<shift-id>", "reason": ""}Examples
Section titled “Examples”curl --request PATCH 'https://api.firstdelivery.com/api/shifts/drop' \ --header 'Content-Type: application/json' \ --data '{ "id": "<shift-id>", "reason": ""}'const response = await fetch("https://api.firstdelivery.com/api/shifts/drop", { "method": "PATCH", "headers": { "Content-Type": "application/json" }, "body": "{\n \"id\": \"<shift-id>\",\n \"reason\": \"\"\n}"})const data = await response.json()import requests
response = requests.request( "PATCH", "https://api.firstdelivery.com/api/shifts/drop", headers={ 'Content-Type': 'application/json'}, data="{\n \"id\": \"<shift-id>\",\n \"reason\": \"\"\n}",)response.raise_for_status()Saved responses
Section titled “Saved responses”{ "status": "Success", "shift": { "id": "<shift-id>", "user_id": null, "reason": "", "checked_in": null, "start": "2026-06-23T16:00:00.000Z", "stop": "2026-06-23T20:00:00.000Z" }}
