{
"error": {
"code": "not_found",
"status": 404,
"message": "The requested resource was not found"
}
}
{
"error": {
"code": "duplicate_schedule_name",
"message": "A schedule with this name already exists",
"status": 422,
"docs_url": "https://docs.shiftkeeper.io/api-reference/errors#duplicate-schedule-name"
}
}
Schedules
Update a schedule
Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.
{
"error": {
"code": "not_found",
"status": 404,
"message": "The requested resource was not found"
}
}
{
"error": {
"code": "duplicate_schedule_name",
"message": "A schedule with this name already exists",
"status": 422,
"docs_url": "https://docs.shiftkeeper.io/api-reference/errors#duplicate-schedule-name"
}
}
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Shiftkeeper docs","colors":{"primary":"#4338CA","light":"#899FEB","dark":"#4338CA"},"favicon":"/favicon.svg","logo":{"light":"https://mintcdn.com/shiftkeeper/0UjY-yTrwVupDEok/logo/light.svg?fit=max\u0026auto=format\u0026n=0UjY-yTrwVupDEok\u0026q=85\u0026s=4056d85cb2884e804ac421d7d096ffe1","dark":"https://mintcdn.com/shiftkeeper/0UjY-yTrwVupDEok/logo/dark.svg?fit=max\u0026auto=format\u0026n=0UjY-yTrwVupDEok\u0026q=85\u0026s=512033acf1aa24f832e91b54d48935f6","href":"https://shiftkeeper.io"},"background":{"decoration":null,"color":{"light":"#FDFDFF","dark":"#20202E"}},"navbar":{"links":[{"label":"Contact","href":"mailto:hello@shiftkeeper.io"}],"primary":{"type":"button","label":"Open app","href":"https://app.shiftkeeper.io"}},"footer":{"socials":{"x":"https://x.com/shiftkeeper","linkedin":"https://linkedin.com/company/shiftkeeper","website":"https://shiftkeeper.io"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"shiftkeeper","hasAudioNarration":false,"actualSubdomain":"shiftkeeper","customDomains":["docs.shiftkeeper.io"],"gitSource":{"type":"github","owner":"shiftkeeper","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21a71e3d3709865082f189","collectionId":"898c6e70-34de-4409-8b9b-df99e4112827","schemaVersion":"v2"},"entitlements":{},"buildId":"6a21a71e3d3709865082f189:success","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":38},{"language":"default","tag":"Schedules","count":17},{"language":"default","tag":"Guides","count":13},{"language":"default","tag":"Using Shiftkeeper","count":11},{"language":"default","tag":"Teams","count":9},{"language":"default","tag":"Coverage","count":6},{"language":"default","tag":"Overrides","count":4},{"language":"default","tag":"Using the API","count":3},{"language":"default","tag":"Workspace","count":3},{"language":"default","tag":"Users","count":3}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/schedules/update-a-schedule","slug":"/api-reference/schedules/update-a-schedule","pageMetadata":{"title":"Update a schedule","description":"Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json patch /schedules/{schedule_id}","href":"/api-reference/schedules/update-a-schedule","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update a schedule","description":"Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json patch /schedules/{schedule_id}","href":"/api-reference/schedules/update-a-schedule","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Update a schedule","tags":["Schedules"],"description":"Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.","requestBody":"0a56f37b-7fa1-4cba-b60c-d1f231ac4372","parameters":["013a6595-1323-4b24-8665-f2f4ed95d6b0"],"responses":{"200":"3ce97db1-8d94-47cf-8876-b3f2c77c75c6","404":"b1ea9249-41b4-4295-9ff1-e4ad3fbc9651","422":"d92a8876-513a-4282-ba24-98df0f04726d"},"method":"patch","type":"path","servers":["5d4271df-6d94-4335-93e6-818e683201f6"],"security":["5cf14d6a-45fa-494e-9cc5-3688a7a47457"],"path":"/schedules/{schedule_id}","baseUrlOptions":["https://api.shiftkeeper.io"],"title":"Update a schedule","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"013a6595-1323-4b24-8665-f2f4ed95d6b0":{"schema":{"type":"string","isRequired":true,"description":"The ID of the schedule.","uniqueKey":"","typeLabel":"string"},"examples":{"sch_oKjoLJUl47g7OYYVPUG5t":{"value":"sch_oKjoLJUl47g7OYYVPUG5t"},"sch_kje7ER643ED0STVnB8Zc9":{"value":"sch_kje7ER643ED0STVnB8Zc9"}},"in":"path","name":"schedule_id","required":true,"description":"The ID of the schedule."}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"description":"The name of the schedule.","uniqueKey":"name","typeLabel":"string"},"description":{"type":"string","maxLength":200,"description":"The description of the schedule.","uniqueKey":"description","typeLabel":"string"},"layers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"description":"The name of the schedule layer.","isRequired":true,"uniqueKey":"layers.items.[INDEX].name","typeLabel":"string"},"rotation_start":{"type":"string","format":"date-time","description":"The start date and time of the rotation. ISO 8601 format, UTC timezone.","isRequired":true,"uniqueKey":"layers.items.[INDEX].rotation_start","typeLabel":"string\u003cdate-time>"},"concurrent_oncall_users":{"type":"integer","minimum":1,"maximum":4,"description":"The number of concurrent on-call users for this layer.","isRequired":true,"uniqueKey":"layers.items.[INDEX].concurrent_oncall_users","typeLabel":"integer"},"user_references":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","value"],"example":{"type":"email","value":"emma@example.org"},"properties":{"type":{"type":"string","const":"email","isRequired":true,"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX].oneOf.0.type","typeLabel":"string"},"value":{"type":"string","format":"email","isRequired":true,"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX].oneOf.0.value","typeLabel":"string\u003cemail>"}},"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","value"],"example":{"type":"email","value":"emma@example.org"},"properties":{"type":{"type":"string","const":"slack_user_id","isRequired":true,"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX].oneOf.1.type","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX].oneOf.1.value","typeLabel":"string"}},"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","value"],"example":{"type":"email","value":"emma@example.org"},"properties":{"type":{"type":"string","const":"internal_user_id","isRequired":true,"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX].oneOf.2.type","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX].oneOf.2.value","typeLabel":"string"}},"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"layers.items.[INDEX].user_references.items.[INDEX]","typeLabel":"object"},"maxItems":50,"description":"The rotation users in the schedule layer. The order of the users in the array determines the round-robin rotation order. A user can appear multiple times in the rotation.","isRequired":true,"uniqueKey":"layers.items.[INDEX].user_references","typeLabel":"object[]"},"shift_length":{"type":"object","properties":{"amount":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"layers.items.[INDEX].shift_length.amount","typeLabel":"integer"},"unit":{"type":"string","enum":["hours","days","weeks"],"isRequired":true,"uniqueKey":"layers.items.[INDEX].shift_length.unit","typeLabel":"enum\u003cstring>"}},"required":["amount","unit"],"description":"Determines how often shifts are rotated.","isRequired":true,"uniqueKey":"layers.items.[INDEX].shift_length","typeLabel":"object"},"restriction_intervals":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],"description":"The day of the restriction interval.","isRequired":true,"uniqueKey":"layers.items.[INDEX].restriction_intervals.items.[INDEX].day","typeLabel":"enum\u003cstring>"},"from":{"type":"string","description":"The start time of the restriction interval.","isRequired":true,"uniqueKey":"layers.items.[INDEX].restriction_intervals.items.[INDEX].from","typeLabel":"string"},"to":{"type":"string","description":"The end time of the restriction interval.","isRequired":true,"uniqueKey":"layers.items.[INDEX].restriction_intervals.items.[INDEX].to","typeLabel":"string"}},"required":["day","from","to"],"examples":[{"day":"monday","from":"09:00","to":"17:00"},{"day":"tuesday","from":"09:00","to":"17:00"},{"day":"wednesday","from":"09:00","to":"17:00"}],"uniqueKey":"layers.items.[INDEX].restriction_intervals.items.[INDEX]","typeLabel":"object"},"maxItems":35,"description":"Determines the time intervals that the layer is restricted to. Useful if you want to limit the on-call hours to specific times, e.g., only during business hours. If not provided, the layer is unrestricted and covers everyday of the week.","uniqueKey":"layers.items.[INDEX].restriction_intervals","typeLabel":"object[]"}},"required":["name","rotation_start","concurrent_oncall_users","user_references","shift_length"],"uniqueKey":"layers.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":1,"description":"The layers of the schedule. Currently, schedules can have only one layer.","uniqueKey":"layers","typeLabel":"object[]"},"team_ids":{"type":"array","items":{"type":"string","uniqueKey":"team_ids.items.[INDEX]","typeLabel":"string"},"maxItems":10,"description":"The teams to link to the schedule.","uniqueKey":"team_ids","typeLabel":"string[]"}},"examples":[{"name":"Incident responders","team_ids":["tea_VJ4sYEOOXVvJBXqFjRzpm"]}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"Incident responders","team_ids":["tea_VJ4sYEOOXVvJBXqFjRzpm"]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"3ce97db1-8d94-47cf-8876-b3f2c77c75c6":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schedule":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"description":"The name of the schedule.","isRequired":true,"uniqueKey":"schedule.name","typeLabel":"string"},"time_zone":{"type":"string","description":"The IANA time zone of the schedule.","isRequired":true,"uniqueKey":"schedule.time_zone","typeLabel":"string"},"layers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"description":"The name of the schedule layer.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].name","typeLabel":"string"},"rotation_start":{"type":"string","format":"date-time","description":"The start date and time of the rotation. ISO 8601 format, UTC timezone.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].rotation_start","typeLabel":"string\u003cdate-time>"},"concurrent_oncall_users":{"type":"integer","minimum":1,"maximum":4,"description":"The number of concurrent on-call users for this layer.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].concurrent_oncall_users","typeLabel":"integer"},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the user.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].users.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","description":"The name of the user.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].users.items.[INDEX].name","typeLabel":"string"},"email":{"type":"string","format":"email","description":"The email of the user.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].users.items.[INDEX].email","typeLabel":"string\u003cemail>"},"role":{"type":"string","enum":["owner","standard"],"description":"The role of the user. Learn more about roles in [our docs](/shiftkeeper/workspace/users#roles).","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].users.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"seat":{"type":"string","enum":["viewer","member"],"description":"The seat of the user. Learn more about seat in [our docs](/shiftkeeper/workspace/users#seats).","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].users.items.[INDEX].seat","typeLabel":"enum\u003cstring>"},"time_zone":{"type":"string","description":"The preferred time zone of the user. If not set, the organization's time zone will be used.","uniqueKey":"schedule.layers.items.[INDEX].users.items.[INDEX].time_zone","typeLabel":"string"},"slack_id":{"type":"string","description":"The Slack ID of the user.","uniqueKey":"schedule.layers.items.[INDEX].users.items.[INDEX].slack_id","typeLabel":"string"}},"required":["id","name","email","role","seat"],"examples":[{"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"}],"uniqueKey":"schedule.layers.items.[INDEX].users.items.[INDEX]","typeLabel":"object"},"description":"The rotation users in the schedule layer. The order of the users in the array determines the round-robin rotation order. A user can appear multiple times in the rotation.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].users","typeLabel":"object[]"},"shift_length":{"type":"object","properties":{"amount":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].shift_length.amount","typeLabel":"integer"},"unit":{"type":"string","enum":["hours","days","weeks"],"isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].shift_length.unit","typeLabel":"enum\u003cstring>"}},"required":["amount","unit"],"description":"Determines how often shifts are rotated.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].shift_length","typeLabel":"object"},"restriction_intervals":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],"description":"The day of the restriction interval.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].restriction_intervals.items.[INDEX].day","typeLabel":"enum\u003cstring>"},"from":{"type":"string","description":"The start time of the restriction interval.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].restriction_intervals.items.[INDEX].from","typeLabel":"string"},"to":{"type":"string","description":"The end time of the restriction interval.","isRequired":true,"uniqueKey":"schedule.layers.items.[INDEX].restriction_intervals.items.[INDEX].to","typeLabel":"string"}},"required":["day","from","to"],"examples":[{"day":"monday","from":"09:00","to":"17:00"},{"day":"tuesday","from":"09:00","to":"17:00"},{"day":"wednesday","from":"09:00","to":"17:00"}],"uniqueKey":"schedule.layers.items.[INDEX].restriction_intervals.items.[INDEX]","typeLabel":"object"},"maxItems":35,"description":"Determines the time intervals that the layer is restricted to. Useful if you want to limit the on-call hours to specific times, e.g., only during business hours. If not provided, the layer is unrestricted and covers everyday of the week.","uniqueKey":"schedule.layers.items.[INDEX].restriction_intervals","typeLabel":"object[]"}},"required":["name","rotation_start","concurrent_oncall_users","users","shift_length"],"uniqueKey":"schedule.layers.items.[INDEX]","typeLabel":"object"},"description":"The layers of the schedule.","isRequired":true,"uniqueKey":"schedule.layers","typeLabel":"object[]"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the team.","isRequired":true,"uniqueKey":"schedule.teams.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":60,"description":"The name of the team.","isRequired":true,"uniqueKey":"schedule.teams.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","maxLength":200,"description":"The description of the team.","uniqueKey":"schedule.teams.items.[INDEX].description","typeLabel":"string"}},"required":["id","name"],"examples":[{"id":"tea_VJ4sYEOOXVvJBXqFjRzpm","name":"Payments","description":"All about payments and billing"}],"uniqueKey":"schedule.teams.items.[INDEX]","typeLabel":"object"},"description":"The teams linked to the schedule.","isRequired":true,"uniqueKey":"schedule.teams","typeLabel":"object[]"},"current_revision":{"type":"integer","minimum":0,"description":"The current revision of the schedule. A new revision is created every time the schedule layer configuration is changed.","isRequired":true,"uniqueKey":"schedule.current_revision","typeLabel":"integer"},"current_revision_valid_from":{"type":"string","format":"date-time","description":"The timestamp that marks the start of the current revision.","isRequired":true,"uniqueKey":"schedule.current_revision_valid_from","typeLabel":"string\u003cdate-time>"},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the user.","isRequired":true,"uniqueKey":"schedule.users.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","description":"The name of the user.","isRequired":true,"uniqueKey":"schedule.users.items.[INDEX].name","typeLabel":"string"},"email":{"type":"string","format":"email","description":"The email of the user.","isRequired":true,"uniqueKey":"schedule.users.items.[INDEX].email","typeLabel":"string\u003cemail>"},"role":{"type":"string","enum":["owner","standard"],"description":"The role of the user. Learn more about roles in [our docs](/shiftkeeper/workspace/users#roles).","isRequired":true,"uniqueKey":"schedule.users.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"seat":{"type":"string","enum":["viewer","member"],"description":"The seat of the user. Learn more about seat in [our docs](/shiftkeeper/workspace/users#seats).","isRequired":true,"uniqueKey":"schedule.users.items.[INDEX].seat","typeLabel":"enum\u003cstring>"},"time_zone":{"type":"string","description":"The preferred time zone of the user. If not set, the organization's time zone will be used.","uniqueKey":"schedule.users.items.[INDEX].time_zone","typeLabel":"string"},"slack_id":{"type":"string","description":"The Slack ID of the user.","uniqueKey":"schedule.users.items.[INDEX].slack_id","typeLabel":"string"}},"required":["id","name","email","role","seat"],"examples":[{"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"}],"uniqueKey":"schedule.users.items.[INDEX]","typeLabel":"object"},"description":"The users in the schedule. The order does not necessarily match rotation order.","isRequired":true,"uniqueKey":"schedule.users","typeLabel":"object[]"},"description":{"type":"string","maxLength":200,"description":"The description of the schedule.","uniqueKey":"schedule.description","typeLabel":"string"},"current_oncall_shift":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the user.","isRequired":true,"uniqueKey":"schedule.current_oncall_shift.users.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","description":"The name of the user.","isRequired":true,"uniqueKey":"schedule.current_oncall_shift.users.items.[INDEX].name","typeLabel":"string"},"email":{"type":"string","format":"email","description":"The email of the user.","isRequired":true,"uniqueKey":"schedule.current_oncall_shift.users.items.[INDEX].email","typeLabel":"string\u003cemail>"},"role":{"type":"string","enum":["owner","standard"],"description":"The role of the user. Learn more about roles in [our docs](/shiftkeeper/workspace/users#roles).","isRequired":true,"uniqueKey":"schedule.current_oncall_shift.users.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"seat":{"type":"string","enum":["viewer","member"],"description":"The seat of the user. Learn more about seat in [our docs](/shiftkeeper/workspace/users#seats).","isRequired":true,"uniqueKey":"schedule.current_oncall_shift.users.items.[INDEX].seat","typeLabel":"enum\u003cstring>"},"time_zone":{"type":"string","description":"The preferred time zone of the user. If not set, the organization's time zone will be used.","uniqueKey":"schedule.current_oncall_shift.users.items.[INDEX].time_zone","typeLabel":"string"},"slack_id":{"type":"string","description":"The Slack ID of the user.","uniqueKey":"schedule.current_oncall_shift.users.items.[INDEX].slack_id","typeLabel":"string"}},"required":["id","name","email","role","seat"],"examples":[{"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"}],"uniqueKey":"schedule.current_oncall_shift.users.items.[INDEX]","typeLabel":"object"},"description":"The users on-call for this shift.","isRequired":true,"uniqueKey":"schedule.current_oncall_shift.users","typeLabel":"object[]"},"start":{"type":"string","format":"date-time","description":"The start time of the on-call shift.","isRequired":true,"uniqueKey":"schedule.current_oncall_shift.start","typeLabel":"string\u003cdate-time>"},"end":{"type":"string","format":"date-time","description":"The end time of the on-call shift.","isRequired":true,"uniqueKey":"schedule.current_oncall_shift.end","typeLabel":"string\u003cdate-time>"}},"required":["users","start","end"],"description":"The current on-call shift for the schedule.","uniqueKey":"schedule.current_oncall_shift","typeLabel":"object"},"next_oncall_shift":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the user.","isRequired":true,"uniqueKey":"schedule.next_oncall_shift.users.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","description":"The name of the user.","isRequired":true,"uniqueKey":"schedule.next_oncall_shift.users.items.[INDEX].name","typeLabel":"string"},"email":{"type":"string","format":"email","description":"The email of the user.","isRequired":true,"uniqueKey":"schedule.next_oncall_shift.users.items.[INDEX].email","typeLabel":"string\u003cemail>"},"role":{"type":"string","enum":["owner","standard"],"description":"The role of the user. Learn more about roles in [our docs](/shiftkeeper/workspace/users#roles).","isRequired":true,"uniqueKey":"schedule.next_oncall_shift.users.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"seat":{"type":"string","enum":["viewer","member"],"description":"The seat of the user. Learn more about seat in [our docs](/shiftkeeper/workspace/users#seats).","isRequired":true,"uniqueKey":"schedule.next_oncall_shift.users.items.[INDEX].seat","typeLabel":"enum\u003cstring>"},"time_zone":{"type":"string","description":"The preferred time zone of the user. If not set, the organization's time zone will be used.","uniqueKey":"schedule.next_oncall_shift.users.items.[INDEX].time_zone","typeLabel":"string"},"slack_id":{"type":"string","description":"The Slack ID of the user.","uniqueKey":"schedule.next_oncall_shift.users.items.[INDEX].slack_id","typeLabel":"string"}},"required":["id","name","email","role","seat"],"examples":[{"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"}],"uniqueKey":"schedule.next_oncall_shift.users.items.[INDEX]","typeLabel":"object"},"description":"The users on-call for this shift.","isRequired":true,"uniqueKey":"schedule.next_oncall_shift.users","typeLabel":"object[]"},"start":{"type":"string","format":"date-time","description":"The start time of the on-call shift.","isRequired":true,"uniqueKey":"schedule.next_oncall_shift.start","typeLabel":"string\u003cdate-time>"},"end":{"type":"string","format":"date-time","description":"The end time of the on-call shift.","isRequired":true,"uniqueKey":"schedule.next_oncall_shift.end","typeLabel":"string\u003cdate-time>"}},"required":["users","start","end"],"description":"The next on-call shift for the schedule.","uniqueKey":"schedule.next_oncall_shift","typeLabel":"object"}},"required":["name","time_zone","layers","teams","current_revision","current_revision_valid_from","users"],"examples":[{"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"}]}],"isRequired":true,"uniqueKey":"schedule","typeLabel":"object"}},"required":["schedule"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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"}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"b1ea9249-41b4-4295-9ff1-e4ad3fbc9651":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"status":{"type":"number","const":404,"isRequired":true,"uniqueKey":"error.status","typeLabel":"number"},"code":{"type":"string","const":"not_found","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"docs_url":{"type":"string","uniqueKey":"error.docs_url","typeLabel":"string"}},"required":["message","status","code"],"example":{"code":"not_found","status":404,"message":"The requested resource was not found"},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"not_found","status":404,"message":"The requested resource was not found"}}}},"exampleType":"generated"}},"exampleType":"generated"},"d92a8876-513a-4282-ba24-98df0f04726d":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"status":{"type":"number","enum":[422],"isRequired":true,"uniqueKey":"error.status","typeLabel":"enum\u003cnumber>"},"code":{"type":"string","enum":["duplicate_schedule_name","invalid_user_reference"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"docs_url":{"type":"string","uniqueKey":"error.docs_url","typeLabel":"string"}},"required":["message","status","code"],"example":{"code":"unprocessable_entity","status":422,"message":"The request cannot be processed"},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"duplicate_schedule_name","message":"A schedule with this name already exists","status":422,"docs_url":"https://docs.shiftkeeper.io/api-reference/errors#duplicate-schedule-name"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"duplicate_schedule_name","message":"A schedule with this name already exists","status":422,"docs_url":"https://docs.shiftkeeper.io/api-reference/errors#duplicate-schedule-name"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"5cf14d6a-45fa-494e-9cc5-3688a7a47457":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Enter your API key which starts with 'keeper_'","scopes":[]}}},"servers":{"5d4271df-6d94-4335-93e6-818e683201f6":{"url":"https://api.shiftkeeper.io"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Enter your API key which starts with 'keeper_'","scopes":[]},"schema":{"title":"x-api-key","type":"string","description":"Enter your API key which starts with 'keeper_'","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"x-api-key"}],"title":"apiKey"}]},"originalFileLocation":"https://api.shiftkeeper.io/openapi.json"},"subdomain":"shiftkeeper","siteName":"Shiftkeeper docs","title":"Update a schedule - Shiftkeeper docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-11-30T22:06:22.389Z","originalFileLocation":"api-reference/schedules/update-a-schedule.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Shiftkeeper docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update a schedule - Shiftkeeper docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Shiftkeeper docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://shiftkeeper.mintlify.app/_mintlify/api/og/v2?division=Schedules\u0026amp;title=Update+a+schedule\u0026amp;description=Update+a+schedule.+Changes+to+the+schedule+rotation+settings+do+not+affect+shifts+which+have+already+finished.\u0026amp;theme=b9522b741d445c95c52edea2\u0026amp;signature=0411a51950576f67fce94360a67d7e69b6aeb7471296296893d4ba6198b1e122\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Update a schedule - Shiftkeeper docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://shiftkeeper.mintlify.app/_mintlify/api/og/v2?division=Schedules\u0026amp;title=Update+a+schedule\u0026amp;description=Update+a+schedule.+Changes+to+the+schedule+rotation+settings+do+not+affect+shifts+which+have+already+finished.\u0026amp;theme=b9522b741d445c95c52edea2\u0026amp;signature=0411a51950576f67fce94360a67d7e69b6aeb7471296296893d4ba6198b1e122\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/shiftkeeper/vHUPlLWMitlofGOK/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Shiftkeeper docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4338CA\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/schedules/update-a-schedule.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.shiftkeeper.io/#organization\",\"name\":\"Shiftkeeper docs\",\"url\":\"https://docs.shiftkeeper.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/shiftkeeper/0UjY-yTrwVupDEok/logo/light.svg?fit=max\u0026auto=format\u0026n=0UjY-yTrwVupDEok\u0026q=85\u0026s=4056d85cb2884e804ac421d7d096ffe1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.shiftkeeper.io#website\",\"name\":\"Shiftkeeper docs\",\"url\":\"https://docs.shiftkeeper.io\",\"publisher\":{\"@id\":\"https://docs.shiftkeeper.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule#webpage\",\"url\":\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule\",\"name\":\"Update a schedule\",\"description\":\"Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.\",\"dateModified\":\"2025-11-30T22:06:22.389Z\",\"isPartOf\":{\"@id\":\"https://docs.shiftkeeper.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Schedules\",\"item\":\"https://docs.shiftkeeper.io/api-reference/schedules/list-schedules\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update a schedule\",\"item\":\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule#apireference\",\"headline\":\"Update a schedule\",\"name\":\"Update a schedule\",\"description\":\"Update a schedule. Changes to the schedule rotation settings do not affect shifts which have already finished.\",\"url\":\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule\",\"mainEntityOfPage\":{\"@id\":\"https://docs.shiftkeeper.io/api-reference/schedules/update-a-schedule#webpage\"},\"dateModified\":\"2025-11-30T22:06:22.389Z\",\"publisher\":{\"@id\":\"https://docs.shiftkeeper.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.shiftkeeper.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Shiftkeeper docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Shiftkeeper docs","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/getting-started/introduction"}]},{"tab":"API Reference","groups":[{"group":"Using the API","pages":[{"title":"Getting started","href":"/api-reference/getting-started"},{"title":"Versions","href":"/api-reference/versions"},{"title":"Errors","href":"/api-reference/errors"}]},{"group":"Schedules","pages":[{"title":"List schedules","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /schedules/","href":"/api-reference/schedules/list-schedules"},{"title":"Create a schedule","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json post /schedules/","href":"/api-reference/schedules/create-a-schedule"},{"title":"Get a schedule","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /schedules/{schedule_id}","href":"/api-reference/schedules/get-a-schedule"},{"title":"Delete a schedule","description":"Delete a schedule. This also removes the attached Slack user group, if there is one.","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json delete /schedules/{schedule_id}","href":"/api-reference/schedules/delete-a-schedule"},{"title":"Update a schedule","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json patch /schedules/{schedule_id}","href":"/api-reference/schedules/update-a-schedule"},{"title":"List schedule shifts","description":"List all shifts for a schedule within a given time interval.","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /schedules/{schedule_id}/shifts/","href":"/api-reference/schedules/list-schedule-shifts"},{"title":"Get the Slack user group for a schedule","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /schedules/{schedule_id}/slack_user_group/","href":"/api-reference/schedules/get-the-slack-user-group-for-a-schedule"},{"title":"Attach or update the Slack user group for a schedule","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json put /schedules/{schedule_id}/slack_user_group/","href":"/api-reference/schedules/attach-or-update-the-slack-user-group-for-a-schedule"},{"title":"Detach the Slack user group from a schedule","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json delete /schedules/{schedule_id}/slack_user_group/","href":"/api-reference/schedules/detach-the-slack-user-group-from-a-schedule"},{"title":"List linked schedule Slack channels","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /schedules/{schedule_id}/slack_channels/","href":"/api-reference/schedules/list-linked-schedule-slack-channels"},{"title":"Link a Slack channel to a schedule","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json put /schedules/{schedule_id}/slack_channels/{channel_id}","href":"/api-reference/schedules/link-a-slack-channel-to-a-schedule"},{"title":"Unlink a Slack channel from a schedule","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json delete /schedules/{schedule_id}/slack_channels/{channel_id}","href":"/api-reference/schedules/unlink-a-slack-channel-from-a-schedule"}]},{"group":"Overrides","pages":[{"title":"List schedule overrides","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /schedules/{schedule_id}/overrides/","href":"/api-reference/overrides/list-schedule-overrides"},{"title":"Override a schedule shift","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json post /schedules/{schedule_id}/overrides/","href":"/api-reference/overrides/override-a-schedule-shift"},{"title":"Get a schedule override","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /schedules/{schedule_id}/overrides/{override_id}","href":"/api-reference/overrides/get-a-schedule-override"},{"title":"Delete a schedule override","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json delete /schedules/{schedule_id}/overrides/{override_id}","href":"/api-reference/overrides/delete-a-schedule-override"}]},{"group":"Coverage","pages":[{"title":"List coverage requests","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /coverage_requests/","href":"/api-reference/coverage/list-coverage-requests"},{"title":"Get a coverage request","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /coverage_requests/{coverage_request_id}","href":"/api-reference/coverage/get-a-coverage-request"},{"title":"Accept or decline a coverage request","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json post /coverage_requests/events/","href":"/api-reference/coverage/accept-or-decline-a-coverage-request"},{"title":"List coverage requests for the authenticated user","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /user/coverage_requests/","href":"/api-reference/coverage/list-coverage-requests-for-the-authenticated-user"},{"title":"Request coverage","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json post /user/coverage_requests/","href":"/api-reference/coverage/request-coverage"},{"title":"Cancel a coverage request","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json delete /user/coverage_requests/{coverage_request_id}","href":"/api-reference/coverage/cancel-a-coverage-request"}]},{"group":"Shifts","pages":[{"title":"List on-call shifts for the authenticated user","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /user/shifts/","href":"/api-reference/shifts/list-on-call-shifts-for-the-authenticated-user"}]},{"group":"Users","pages":[{"title":"Get the authenticated user","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /user/","href":"/api-reference/users/get-the-authenticated-user"},{"title":"List users","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /users/","href":"/api-reference/users/list-users"},{"title":"Get a user","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /users/{user_id}","href":"/api-reference/users/get-a-user"}]},{"group":"Teams","pages":[{"title":"List teams","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /teams/","href":"/api-reference/teams/list-teams"},{"title":"Create a team","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json post /teams/","href":"/api-reference/teams/create-a-team"},{"title":"Get a team","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /teams/{team_id}","href":"/api-reference/teams/get-a-team"},{"title":"Delete a team","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json delete /teams/{team_id}","href":"/api-reference/teams/delete-a-team"},{"title":"Update a team","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json patch /teams/{team_id}","href":"/api-reference/teams/update-a-team"},{"title":"List team members","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /teams/{team_id}/members/","href":"/api-reference/teams/list-team-members"},{"title":"Get team member","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json get /teams/{team_id}/members/{user_id}","href":"/api-reference/teams/get-team-member"},{"title":"Add team member","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json put /teams/{team_id}/members/{user_id}","href":"/api-reference/teams/add-team-member"},{"title":"Remove team member","deprecated":null,"version":null,"openapi":"https://api.shiftkeeper.io/openapi.json delete /teams/{team_id}/members/{user_id}","href":"/api-reference/teams/remove-team-member"}]}]}]},"title":"Update a schedule - Shiftkeeper docs","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}