Schedules
an integer specifying the starting point (beginning with 0) when paging through a list of entities
0
the maximum number of results when paging through a list of schedules.
20
GET /api/schedules HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
a list of on-call schedules
[
{
"id": 1,
"name": "text",
"timezone": "Europe/Berlin",
"type": "STATIC",
"scheduleLayers": [
{
"name": "text",
"startsOn": "2025-07-08T11:08:33.841Z",
"endsOn": "2025-07-08T11:08:33.841Z",
"users": [
{
"id": 1,
"firstName": "text",
"lastName": "text"
}
],
"rotation": "text",
"restrictionType": "TIMES_OF_WEEK",
"restrictions": [
{
"from": {
"dayOfWeek": "MONDAY",
"time": "text"
},
"to": {
"dayOfWeek": "MONDAY",
"time": "text"
}
}
]
}
],
"shifts": [
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
],
"showGaps": true,
"defaultShiftDuration": "text",
"currentShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"nextShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"teams": [
{
"id": 1,
"name": "text"
}
]
}
]
Used for static schedules to prevent creating schedules with gaps
POST /api/schedules HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 873
{
"id": 1,
"name": "text",
"timezone": "Europe/Berlin",
"type": "STATIC",
"scheduleLayers": [
{
"name": "text",
"startsOn": "2025-07-08T11:08:33.841Z",
"endsOn": "2025-07-08T11:08:33.841Z",
"users": [
{
"id": 1,
"firstName": "text",
"lastName": "text"
}
],
"rotation": "text",
"restrictionType": "TIMES_OF_WEEK",
"restrictions": [
{
"from": {
"dayOfWeek": "MONDAY",
"time": "text"
},
"to": {
"dayOfWeek": "MONDAY",
"time": "text"
}
}
]
}
],
"shifts": [
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
],
"showGaps": true,
"defaultShiftDuration": "text",
"currentShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"nextShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"teams": [
{
"id": 1,
"name": "text"
}
]
}
The created on-call schedule
{
"id": 1,
"name": "text",
"timezone": "Europe/Berlin",
"type": "STATIC",
"scheduleLayers": [
{
"name": "text",
"startsOn": "2025-07-08T11:08:33.841Z",
"endsOn": "2025-07-08T11:08:33.841Z",
"users": [
{
"id": 1,
"firstName": "text",
"lastName": "text"
}
],
"rotation": "text",
"restrictionType": "TIMES_OF_WEEK",
"restrictions": [
{
"from": {
"dayOfWeek": "MONDAY",
"time": "text"
},
"to": {
"dayOfWeek": "MONDAY",
"time": "text"
}
}
]
}
],
"shifts": [
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
],
"showGaps": true,
"defaultShiftDuration": "text",
"currentShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"nextShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"teams": [
{
"id": 1,
"name": "text"
}
]
}
entity ID
GET /api/schedules/{id} HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
The schedule object. (scheduleLayers [only available for RECURRING schedules], shifts [only available for STATIC schedules])
{
"id": 1,
"name": "text",
"timezone": "Europe/Berlin",
"type": "STATIC",
"scheduleLayers": [
{
"name": "text",
"startsOn": "2025-07-08T11:08:33.841Z",
"endsOn": "2025-07-08T11:08:33.841Z",
"users": [
{
"id": 1,
"firstName": "text",
"lastName": "text"
}
],
"rotation": "text",
"restrictionType": "TIMES_OF_WEEK",
"restrictions": [
{
"from": {
"dayOfWeek": "MONDAY",
"time": "text"
},
"to": {
"dayOfWeek": "MONDAY",
"time": "text"
}
}
]
}
],
"shifts": [
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
],
"showGaps": true,
"defaultShiftDuration": "text",
"currentShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"nextShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"teams": [
{
"id": 1,
"name": "text"
}
]
}
entity ID
Used for static schedules to prevent updating schedules with gaps
PUT /api/schedules/{id} HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 873
{
"id": 1,
"name": "text",
"timezone": "Europe/Berlin",
"type": "STATIC",
"scheduleLayers": [
{
"name": "text",
"startsOn": "2025-07-08T11:08:33.841Z",
"endsOn": "2025-07-08T11:08:33.841Z",
"users": [
{
"id": 1,
"firstName": "text",
"lastName": "text"
}
],
"rotation": "text",
"restrictionType": "TIMES_OF_WEEK",
"restrictions": [
{
"from": {
"dayOfWeek": "MONDAY",
"time": "text"
},
"to": {
"dayOfWeek": "MONDAY",
"time": "text"
}
}
]
}
],
"shifts": [
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
],
"showGaps": true,
"defaultShiftDuration": "text",
"currentShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"nextShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"teams": [
{
"id": 1,
"name": "text"
}
]
}
The updated on-call schedule
{
"id": 1,
"name": "text",
"timezone": "Europe/Berlin",
"type": "STATIC",
"scheduleLayers": [
{
"name": "text",
"startsOn": "2025-07-08T11:08:33.841Z",
"endsOn": "2025-07-08T11:08:33.841Z",
"users": [
{
"id": 1,
"firstName": "text",
"lastName": "text"
}
],
"rotation": "text",
"restrictionType": "TIMES_OF_WEEK",
"restrictions": [
{
"from": {
"dayOfWeek": "MONDAY",
"time": "text"
},
"to": {
"dayOfWeek": "MONDAY",
"time": "text"
}
}
]
}
],
"shifts": [
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
],
"showGaps": true,
"defaultShiftDuration": "text",
"currentShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"nextShift": {
"user": {
"id": 1,
"firstName": "text",
"lastName": "text"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
},
"teams": [
{
"id": 1,
"name": "text"
}
]
}
entity ID
from date, default is start of last month
until date, default is from date plus 3 months
if true, shifts won't include overrides
false
GET /api/schedules/{id}/shifts HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
the shift objects
[
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text",
"email": "text",
"timezone": "Europe/Berlin",
"position": "text",
"department": "text",
"avatarUrl": "text",
"language": "de",
"region": "DE",
"role": "STAKEHOLDER",
"shiftColor": "text",
"mutedUntil": "2025-07-08T11:08:33.841Z",
"createdAt": "2025-07-08T11:08:33.841Z",
"updatedAt": "2025-07-08T11:08:33.841Z"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
]
entity ID
GET /api/schedules/{id}/overrides HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
the shift objects
[
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text",
"email": "text",
"timezone": "Europe/Berlin",
"position": "text",
"department": "text",
"avatarUrl": "text",
"language": "de",
"region": "DE",
"role": "STAKEHOLDER",
"shiftColor": "text",
"mutedUntil": "2025-07-08T11:08:33.841Z",
"createdAt": "2025-07-08T11:08:33.841Z",
"updatedAt": "2025-07-08T11:08:33.841Z"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
]
entity ID
PUT /api/schedules/{id}/overrides HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 391
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text",
"email": "text",
"timezone": "Europe/Berlin",
"position": "text",
"department": "text",
"language": "de",
"region": "DE",
"role": "STAKEHOLDER",
"shiftColor": "text",
"mutedUntil": "2025-07-08T11:08:33.841Z",
"createdAt": "2025-07-08T11:08:33.841Z",
"updatedAt": "2025-07-08T11:08:33.841Z"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
the overwritten schedule object
{
"id": 1,
"name": "text",
"type": "STATIC"
}
entity ID
GET /api/schedules/{id}/user-on-call HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
{
"user": {
"id": 1,
"firstName": "text",
"lastName": "text",
"email": "text",
"timezone": "Europe/Berlin",
"position": "text",
"department": "text",
"avatarUrl": "text",
"language": "de",
"region": "DE",
"role": "STAKEHOLDER",
"shiftColor": "text",
"mutedUntil": "2025-07-08T11:08:33.841Z",
"createdAt": "2025-07-08T11:08:33.841Z",
"updatedAt": "2025-07-08T11:08:33.841Z"
},
"end": "2025-07-08T11:08:33.841Z",
"start": "2025-07-08T11:08:33.841Z"
}
Was this helpful?