Skip to content

Update a shift

Updates a shift. For a shift in a recurring series, the scope query parameter controls whether the change applies to just this occurrence (this, the default), this and later occurrences (following), or the entire series (all).

POST
/v1/shifts/{id}
scope
string
default: this
Allowed values: this following all
Media typeapplication/json
object
startDate
required
string format: date-time
endDate
required
string format: date-time
isSplit
boolean
splitEndTime
string format: date-time
splitStartTime
string format: date-time
templateId
required
integer
>= -9007199254740991 <= 9007199254740991
tempId
required
string
notes
string
visibility
required
string
Allowed values: public private hidden
Example
{
"startDate": "2026-01-01T09:00:00.000Z",
"endDate": "2026-01-01T09:00:00.000Z",
"isSplit": true,
"splitEndTime": "2026-01-01T09:00:00.000Z",
"splitStartTime": "2026-01-01T09:00:00.000Z",
"templateId": 0,
"tempId": "string",
"notes": "string",
"visibility": "public"
}

The updated shift

Media typeapplication/json
object
item
required
object
id
required
integer
>= -9007199254740991 <= 9007199254740991
startDate
required
string format: date-time
endDate
required
string format: date-time
isSplit
boolean
splitEndTime
string format: date-time
splitStartTime
string format: date-time
userId
required
integer
>= -9007199254740991 <= 9007199254740991
templateId
required
integer
>= -9007199254740991 <= 9007199254740991
tempId
required
string
notes
string
visibility
required
string
Allowed values: public private hidden
seriesId
integer
>= -9007199254740991 <= 9007199254740991
Example
{
"item": {
"id": 0,
"startDate": "2026-01-01T09:00:00.000Z",
"endDate": "2026-01-01T09:00:00.000Z",
"isSplit": true,
"splitEndTime": "2026-01-01T09:00:00.000Z",
"splitStartTime": "2026-01-01T09:00:00.000Z",
"userId": 0,
"templateId": 0,
"tempId": "string",
"notes": "string",
"visibility": "public",
"seriesId": 0
}
}