Using the API
Schedules
- GETList schedules
- POSTCreate a schedule
- GETGet a schedule
- DELDelete a schedule
- PATCHUpdate a schedule
- GETList schedule shifts
- GETGet the Slack user group for a schedule
- PUTAttach or update the Slack user group for a schedule
- DELDetach the Slack user group from a schedule
- GETList linked schedule Slack channels
- PUTLink a Slack channel to a schedule
- DELUnlink a Slack channel from a schedule
Overrides
Coverage
Schedules
Get a schedule
Get a schedule by its ID.
GET
/
schedules
/
{schedule_id}
curl --request GET \
--url https://api.shiftkeeper.io/schedules/{schedule_id} \
--header 'x-api-key: <api-key>'
{
"schedule": {
"name": "Incident responders",
"description": "Incident responders",
"time_zone": "Europe/Berlin",
"layers": [
{
"name": "Main",
"rotation_start": "2024-01-01T00:00:00Z",
"concurrent_oncall_users": 1,
"users": [
{
"id": "usr_bq7CmsOKLmkMeZkUUu1hy",
"name": "Rick",
"email": "rick@example.org",
"time_zone": "Europe/Paris",
"role": "owner",
"seat": "member",
"slack_id": "U082KENSEQ3"
},
{
"id": "usr_C0GwCFdk0I4pBMRny4qYV",
"name": "Dena",
"email": "dena@example.org",
"role": "standard",
"seat": "member",
"slack_id": "U082GMAFR1T"
},
{
"id": "usr_YlxrjoB1JqUsollScfFYT",
"name": "Lily",
"email": "lily@example.org",
"time_zone": "America/New_York",
"role": "standard",
"seat": "viewer",
"slack_id": "U0529FWNCG2"
}
],
"shift_length": {
"amount": 1,
"unit": "weeks"
},
"restriction_intervals": []
}
],
"current_revision": 1,
"current_revision_valid_from": "2024-12-01T00:00:00Z",
"current_oncall_shift": {
"users": [
{
"id": "usr_bq7CmsOKLmkMeZkUUu1hy",
"name": "Rick",
"email": "rick@example.org",
"time_zone": "Europe/Paris",
"role": "owner",
"seat": "member",
"slack_id": "U082KENSEQ3"
}
],
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-01T01:00:00Z"
},
"next_oncall_shift": {
"users": [
{
"id": "usr_C0GwCFdk0I4pBMRny4qYV",
"name": "Dena",
"email": "dena@example.org",
"role": "standard",
"seat": "member",
"slack_id": "U082GMAFR1T"
}
],
"start": "2024-01-01T01:00:00Z",
"end": "2024-01-01T02:00:00Z"
},
"users": [
{
"id": "usr_bq7CmsOKLmkMeZkUUu1hy",
"name": "Rick",
"email": "rick@example.org",
"time_zone": "Europe/Paris",
"role": "owner",
"seat": "member",
"slack_id": "U082KENSEQ3"
},
{
"id": "usr_C0GwCFdk0I4pBMRny4qYV",
"name": "Dena",
"email": "dena@example.org",
"role": "standard",
"seat": "member",
"slack_id": "U082GMAFR1T"
},
{
"id": "usr_YlxrjoB1JqUsollScfFYT",
"name": "Lily",
"email": "lily@example.org",
"time_zone": "America/New_York",
"role": "standard",
"seat": "viewer",
"slack_id": "U0529FWNCG2"
}
],
"teams": [
{
"id": "tea_VJ4sYEOOXVvJBXqFjRzpm",
"name": "Payments",
"description": "All about payments and billing"
}
]
}
}
Authorizations
Enter your API key which starts with 'keeper_'
Path Parameters
The ID of the schedule.
Response
200
application/json
Default Response
The response is of type object
.
curl --request GET \
--url https://api.shiftkeeper.io/schedules/{schedule_id} \
--header 'x-api-key: <api-key>'
{
"schedule": {
"name": "Incident responders",
"description": "Incident responders",
"time_zone": "Europe/Berlin",
"layers": [
{
"name": "Main",
"rotation_start": "2024-01-01T00:00:00Z",
"concurrent_oncall_users": 1,
"users": [
{
"id": "usr_bq7CmsOKLmkMeZkUUu1hy",
"name": "Rick",
"email": "rick@example.org",
"time_zone": "Europe/Paris",
"role": "owner",
"seat": "member",
"slack_id": "U082KENSEQ3"
},
{
"id": "usr_C0GwCFdk0I4pBMRny4qYV",
"name": "Dena",
"email": "dena@example.org",
"role": "standard",
"seat": "member",
"slack_id": "U082GMAFR1T"
},
{
"id": "usr_YlxrjoB1JqUsollScfFYT",
"name": "Lily",
"email": "lily@example.org",
"time_zone": "America/New_York",
"role": "standard",
"seat": "viewer",
"slack_id": "U0529FWNCG2"
}
],
"shift_length": {
"amount": 1,
"unit": "weeks"
},
"restriction_intervals": []
}
],
"current_revision": 1,
"current_revision_valid_from": "2024-12-01T00:00:00Z",
"current_oncall_shift": {
"users": [
{
"id": "usr_bq7CmsOKLmkMeZkUUu1hy",
"name": "Rick",
"email": "rick@example.org",
"time_zone": "Europe/Paris",
"role": "owner",
"seat": "member",
"slack_id": "U082KENSEQ3"
}
],
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-01T01:00:00Z"
},
"next_oncall_shift": {
"users": [
{
"id": "usr_C0GwCFdk0I4pBMRny4qYV",
"name": "Dena",
"email": "dena@example.org",
"role": "standard",
"seat": "member",
"slack_id": "U082GMAFR1T"
}
],
"start": "2024-01-01T01:00:00Z",
"end": "2024-01-01T02:00:00Z"
},
"users": [
{
"id": "usr_bq7CmsOKLmkMeZkUUu1hy",
"name": "Rick",
"email": "rick@example.org",
"time_zone": "Europe/Paris",
"role": "owner",
"seat": "member",
"slack_id": "U082KENSEQ3"
},
{
"id": "usr_C0GwCFdk0I4pBMRny4qYV",
"name": "Dena",
"email": "dena@example.org",
"role": "standard",
"seat": "member",
"slack_id": "U082GMAFR1T"
},
{
"id": "usr_YlxrjoB1JqUsollScfFYT",
"name": "Lily",
"email": "lily@example.org",
"time_zone": "America/New_York",
"role": "standard",
"seat": "viewer",
"slack_id": "U0529FWNCG2"
}
],
"teams": [
{
"id": "tea_VJ4sYEOOXVvJBXqFjRzpm",
"name": "Payments",
"description": "All about payments and billing"
}
]
}
}
Assistant
Responses are generated using AI and may contain mistakes.