ESC
Type to search...

Schedule.ReadWrite.All

Export JSON
Export CSV
Copy URL
Print
ApplicationDelegated Read/Write All Resources

Allows the app to manage all schedules, schedule groups, shifts and associated entities in the Teams or Shifts application without a signed-in user.

Permission data: April 6, 2026 at 4:06 AM UTC
Delegated Access App-Only Access

Permission Details

Application Permission

Read and write all schedule items

Allows the app to manage all schedules, schedule groups, shifts and associated entities in the Teams or Shifts application without a signed-in user.

Delegated Permission Admin consent required

Read and write user schedule items

Allows the app to manage schedule, schedule groups, shifts and associated entities in the Teams or Shifts application on behalf of the signed-in user.

Properties

Microsoft Graph v1.0 exact-category-docs

Properties is shown from stable Microsoft Graph v1.0 metadata.

Property Type Description
enabled BooleanNullable Indicates whether the schedule is enabled for the team. Required.
id string ID of the schedule.
isActivitiesIncludedWhenCopyingShiftsEnabled BooleanNullable Indicates whether copied shifts include activities from the original shift.
offerShiftRequestsEnabled BooleanNullable Indicates whether offer shift requests are enabled for the schedule.
openShiftsEnabled BooleanNullable Indicates whether open shifts are enabled for the schedule.
provisionStatus operationStatusRead-only The status of the schedule provisioning. The possible values are notStarted, running, completed, failed.
provisionStatusCode stringRead-onlyNullable Additional information about why schedule provisioning failed.
startDayOfWeek dayOfWeek Indicates the start day of the week. The possible values are: sunday, monday, tuesday, wednesday, thursday, friday, saturday.
swapShiftsRequestsEnabled BooleanNullable Indicates whether swap shifts requests are enabled for the schedule.
timeClockEnabled BooleanNullable Indicates whether time clock is enabled for the schedule.
timeClockSettings timeClockSettings The time clock location settings for this schedule.
timeOffRequestsEnabled BooleanNullable Indicates whether time off requests are enabled for the schedule.
timeZone stringNullable Indicates the time zone of the schedule team using tz database format. Required.
workforceIntegrationIds String collection The IDs for the workforce integrations associated with this schedule.
dayNotes dayNote collection The day notes in the schedule.

Showing 15 of 25 properties.

JSON Representation

Microsoft Graph v1.0 exact-category-docs

JSON representation is shown from stable Microsoft Graph v1.0 metadata.

JSON representation
{
  "@odata.type": "#microsoft.graph.schedule",
  "id": "String (identifier)",
  "enabled": "Boolean",
  "timeZone": "String",
  "provisionStatus": "String",
  "provisionStatusCode": "String",
  "workforceIntegrationIds": [
    "String"
  ],
  "timeClockEnabled": "Boolean",
  "timeClockSettings": {
    "@odata.type": "microsoft.graph.timeClockSettings"
  },
  "openShiftsEnabled": "Boolean",
  "swapShiftsRequestsEnabled": "Boolean",
  "offerShiftRequestsEnabled": "Boolean",
  "timeOffRequestsEnabled": "Boolean",
  "startDayOfWeek": "String",
  "isActivitiesIncludedWhenCopyingShiftsEnabled": "Boolean"
}

Relationships

Microsoft Graph v1.0 exact-category-docs

Relationships is shown from stable Microsoft Graph v1.0 metadata.

Relationship Type Description
dayNotes dayNote collection The day notes in the schedule.
offerShiftRequests offerShiftRequest collection The offer requests for shifts in the schedule.
openShiftChangeRequests openShiftChangeRequest collection The open shift requests in the schedule.
openShifts openShift collection The set of open shifts in a scheduling group in the schedule.
schedulingGroups schedulingGroup collection The logical grouping of users in the schedule (usually by role).
shifts shift collection The shifts in the schedule.
swapShiftsChangeRequests swapShiftsChangeRequest collection The swap requests for shifts in the schedule.
timeCards timeCard collection The time cards in the schedule.
timesOff timeOff collection The instances of times off in the schedule.
timeOffReasons timeOffReason collection The set of reasons for a time off in the schedule.
timeOffRequests timeOffRequest collection The time off requests in the schedule.
workforceIntegrations workforceIntegration collection An instance of a workforce integration per team with outbound data flow on synchronous change notifications (for supported entities).
workforceIntegrationIds string collection The IDs for the workforce integrations associated with this schedule.
shiftsRoleDefinitions shiftsRoleDefinition collection The definitions of the roles in the schedule.

Graph Methods

Delegated access App-only access
Exact Microsoft Learn match

Microsoft Graph v1.0 endpoints are mapped directly from refreshed Microsoft Learn permissions tables.

Methods
GET /teams/{id}/schedule/openShiftChangeRequests
GET /teams/{id}/schedule/openShiftChangeRequests/{openShiftsChangeRequestId}
GET /teams/{id}/schedule/openShifts
GET /teams/{id}/schedule/openShifts/{openShiftId}
GET /teams/{teamId}/schedule
GET /teams/{teamId}/schedule/offerShiftRequests
GET /teams/{teamId}/schedule/offerShiftRequests/{offerShiftRequestId}
GET /teams/{teamId}/schedule/schedulingGroups
GET /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
GET /teams/{teamId}/schedule/shifts
GET /teams/{teamId}/schedule/shifts/{shiftId}
GET /teams/{teamId}/schedule/swapShiftsChangeRequests
GET /teams/{teamId}/schedule/timeOffReasons
GET /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
GET /teams/{teamId}/schedule/timeOffRequests
GET /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}
GET /teams/{teamId}/schedule/timesOff
GET /teams/{teamId}/schedule/timesOff/{timeOffId}
GET /teams/{teamsId}/schedule/dayNotes
GET /teams/{teamsId}/schedule/dayNotes/{dayNoteId}
GET /teams/{teamsId}/schedule/timeCards
GET /teams/{teamsId}/schedule/timeCards/{timeCardId}
POST /teams/{id}/schedule/openShiftChangeRequests
POST /teams/{id}/schedule/openShiftChangeRequests/{openShiftChangeRequestId}/approve
POST /teams/{id}/schedule/openShiftChangeRequests/{openShiftChangeRequestId}/decline
POST /teams/{id}/schedule/openShifts
POST /teams/{teamId}/schedule/offerShiftRequests
POST /teams/{teamId}/schedule/offerShiftRequests/{offerShiftRequestId}/approve
POST /teams/{teamId}/schedule/offerShiftRequests/{offerShiftRequestId}/decline
POST /teams/{teamId}/schedule/schedulingGroups
POST /teams/{teamId}/schedule/share
POST /teams/{teamId}/schedule/shifts
POST /teams/{teamId}/schedule/swapShiftsChangeRequests
POST /teams/{teamId}/schedule/swapShiftsChangeRequests/{swapShiftChangeRequestId}/approve
POST /teams/{teamId}/schedule/swapShiftsChangeRequests/{swapShiftChangeRequestId}/decline
POST /teams/{teamId}/schedule/timeCards/clockIn
POST /teams/{teamId}/schedule/timeOffReasons
POST /teams/{teamId}/schedule/timeOffRequests
POST /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}/approve
POST /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}/decline
POST /teams/{teamId}/schedule/timesOff
POST /teams/{teamsId}/schedule/dayNotes
POST /teams/{teamsId}/schedule/openShifts/{openShiftId}/stageForDeletion
POST /teams/{teamsId}/schedule/shifts/{shiftId}/stageForDeletion
POST /teams/{teamsId}/schedule/timeCards
POST /teams/{teamsId}/schedule/timeCards/{timeCardId}/clockOut
POST /teams/{teamsId}/schedule/timeCards/{timeCardId}/confirm
POST /teams/{teamsId}/schedule/timeCards/{timeCardId}/endBreak
POST /teams/{teamsId}/schedule/timeCards/{timeCardId}/startBreak
POST /teams/{teamsId}/schedule/timesOff/{timeOffId}/stageForDeletion
PUT /teams/{id}/schedule/openShifts/{openShiftId}
PUT /teams/{teamId}/schedule
PUT /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
PUT /teams/{teamId}/schedule/shifts/{shiftId}
PUT /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
PUT /teams/{teamId}/schedule/timesOff/{timeOffId}
PUT /teams/{teamsId}/schedule/dayNotes/{dayNoteId}
PUT /teams/{teamsId}/schedule/timeCards/{timeCardId}
DELETE /teams/{id}/schedule/openShifts/{openShiftId}
DELETE /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
DELETE /teams/{teamId}/schedule/shifts/{shiftId}
DELETE /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
DELETE /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}
DELETE /teams/{teamId}/schedule/timesOff/{timeOffId}
DELETE /teams/{teamsId}/schedule/dayNotes/{dayNoteId}
DELETE /teams/{teamsId}/schedule/timeCards/{timeCardId}
Exact Microsoft Learn match

Microsoft Graph beta endpoints are mapped directly from refreshed Microsoft Learn permissions tables.

Methods
GET /me/joinedTeams/getOpenShifts
GET /me/joinedTeams/getShifts
GET /me/joinedTeams/getTimesOff
GET /team/{teamId}/schedule/shiftsRoleDefinitions/{roleId}
GET /teams/{id}/schedule/openShiftChangeRequests
GET /teams/{id}/schedule/openShiftChangeRequests/{openShiftsChangeRequestId}
GET /teams/{id}/schedule/openShifts
GET /teams/{id}/schedule/openShifts/{openShiftId}
GET /teams/{teamId}/schedule
GET /teams/{teamId}/schedule/offerShiftRequests
GET /teams/{teamId}/schedule/offerShiftRequests/{offerShiftRequestId}
GET /teams/{teamId}/schedule/schedulingGroups
GET /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
GET /teams/{teamId}/schedule/shifts
GET /teams/{teamId}/schedule/shifts/{shiftId}
GET /teams/{teamId}/schedule/swapShiftsChangeRequests
GET /teams/{teamId}/schedule/timeCards
GET /teams/{teamId}/schedule/timeCards/{timeCardId}
GET /teams/{teamId}/schedule/timeOffReasons
GET /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
GET /teams/{teamId}/schedule/timeOffRequests
GET /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}
GET /teams/{teamId}/schedule/timesOff
GET /teams/{teamId}/schedule/timesOff/{timeOffId}
GET /teams/{teamsId}/schedule/dayNotes
GET /teams/{teamsId}/schedule/dayNotes/{dayNoteId}
GET /users/{id | user-principal-name}/joinedTeams/getOpenShifts
GET /users/{id | user-principal-name}/joinedTeams/getShifts
GET /users/{id | user-principal-name}/joinedTeams/getTimesOff
POST /teams/{id}/schedule/openShiftChangeRequests
POST /teams/{id}/schedule/openShiftChangeRequests/{openShiftChangeRequestId}/approve
POST /teams/{id}/schedule/openShiftChangeRequests/{openShiftChangeRequestId}/decline
POST /teams/{id}/schedule/openShifts
POST /teams/{teamId}/schedule/offerShiftRequests
POST /teams/{teamId}/schedule/offerShiftRequests/{offerShiftRequestId}/approve
POST /teams/{teamId}/schedule/offerShiftRequests/{offerShiftRequestId}/decline
POST /teams/{teamId}/schedule/schedulingGroups
POST /teams/{teamId}/schedule/share
POST /teams/{teamId}/schedule/shifts
POST /teams/{teamId}/schedule/swapShiftsChangeRequests
POST /teams/{teamId}/schedule/swapShiftsChangeRequests/{swapShiftChangeRequestId}/approve
POST /teams/{teamId}/schedule/swapShiftsChangeRequests/{swapShiftChangeRequestId}/approveForUser
POST /teams/{teamId}/schedule/swapShiftsChangeRequests/{swapShiftChangeRequestId}/decline
POST /teams/{teamId}/schedule/swapShiftsChangeRequests/{swapShiftChangeRequestId}/declineForUser
POST /teams/{teamId}/schedule/timeCards
POST /teams/{teamId}/schedule/timeCards/{timeCardID}/clockOut
POST /teams/{teamId}/schedule/timeCards/{timeCardId}/confirm
POST /teams/{teamId}/schedule/timeCards/{timeCardID}/endBreak
POST /teams/{teamId}/schedule/timeCards/{timeCardID}/startBreak
POST /teams/{teamId}/schedule/timeCards/clockIn
POST /teams/{teamId}/schedule/timeOffReasons
POST /teams/{teamId}/schedule/timeOffRequests
POST /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}/approve
POST /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}/decline
POST /teams/{teamId}/schedule/timesOff
POST /teams/{teamsId}/schedule/dayNotes
POST /teams/{teamsId}/schedule/offerShiftRequests/{offerShiftRequestId}/approveForUser
POST /teams/{teamsId}/schedule/offerShiftRequests/{offerShiftRequestId}/declineForUser
POST /teams/{teamsId}/schedule/openShiftChangeRequests/{openShiftChangeRequestId}/approveForUser
POST /teams/{teamsId}/schedule/openShiftChangeRequests/{openShiftChangeRequestId}/declineForUser
POST /teams/{teamsId}/schedule/openShifts/{openShiftId}/stageForDeletion
POST /teams/{teamsId}/schedule/shifts/{shiftId}/stageForDeletion
POST /teams/{teamsId}/schedule/timeCards/{timeCardId}/confirmForUser
POST /teams/{teamsId}/schedule/timeOffRequests/{timeOffRequestId}/approveForUser
POST /teams/{teamsId}/schedule/timeOffRequests/{timeOffRequestId}/declineForUser
POST /teams/{teamsId}/schedule/timesOff/{timeOffId}/stageForDeletion
PATCH /team/{teamId}/schedule/shiftsRoleDefinitions/{roleId}
PUT /teams/{id}/schedule/openShifts/{openShiftId}
PUT /teams/{teamId}/schedule
PUT /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
PUT /teams/{teamId}/schedule/shifts/{shiftId}
PUT /teams/{teamId}/schedule/timeCards/{timeCardID}
PUT /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
PUT /teams/{teamId}/schedule/timesOff/{timeOffId}
PUT /teams/{teamsId}/schedule/dayNotes/{dayNoteId}
DELETE /teams/{id}/schedule/openShifts/{openShiftId}
DELETE /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
DELETE /teams/{teamId}/schedule/shifts/{shiftId}
DELETE /teams/{teamId}/schedule/timeCards/{timeCardId}
DELETE /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
DELETE /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}
DELETE /teams/{teamId}/schedule/timesOff/{timeOffId}
DELETE /teams/{teamsId}/schedule/dayNotes/{dayNoteId}
Exact Microsoft Learn PowerShell match

Microsoft Graph PowerShell v1.0 commands are mapped directly from refreshed Microsoft Learn PowerShell snippets.

Commands
Get-MgTeamSchedule /teams/{teamId}/schedule
Get schedule
Get-MgTeamScheduleOfferShiftRequest /teams/{teamId}/schedule/offerShiftRequests
List offerShiftRequest
Get-MgTeamScheduleOfferShiftRequest /teams/{teamId}/schedule/offerShiftRequests/{offerShiftRequestId}
Get offerShiftRequest
Get-MgTeamScheduleOpenShift /teams/{id}/schedule/openShifts
List openShifts
Get-MgTeamScheduleOpenShift /teams/{id}/schedule/openShifts/{openShiftId}
Get openShift
Get-MgTeamScheduleOpenShiftChangeRequest /teams/{id}/schedule/openShiftChangeRequests
List openShiftChangeRequests
Get-MgTeamScheduleOpenShiftChangeRequest /teams/{id}/schedule/openShiftChangeRequests/{openShiftsChangeRequestId}
Get openShiftChangeRequest
Get-MgTeamScheduleSchedulingGroup /teams/{teamId}/schedule/schedulingGroups
List schedulingGroups
Get-MgTeamScheduleSchedulingGroup /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
Get schedulingGroup
Get-MgTeamScheduleShift /teams/{teamId}/schedule/shifts
List shifts
Get-MgTeamScheduleShift /teams/{teamId}/schedule/shifts/{shiftId}
Get shift
Get-MgTeamScheduleSwapShiftChangeRequest /teams/{teamId}/schedule/swapShiftsChangeRequests
Get swapShiftsChangeRequest
Get-MgTeamScheduleSwapShiftChangeRequest /teams/{teamId}/schedule/swapShiftsChangeRequests
List swapShiftsChangeRequest
Get-MgTeamScheduleTimeCard /teams/{teamsId}/schedule/timeCards
List timeCard objects
Get-MgTeamScheduleTimeCard /teams/{teamsId}/schedule/timeCards/{timeCardId}
Get timeCard
Get-MgTeamScheduleTimeOff /teams/{teamId}/schedule/timesOff
List timesOff
Get-MgTeamScheduleTimeOff /teams/{teamId}/schedule/timesOff/{timeOffId}
Get timeOff
Get-MgTeamScheduleTimeOffReason /teams/{teamId}/schedule/timeOffReasons
List timeOffReasons
Get-MgTeamScheduleTimeOffReason /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
Get timeOffReason
Get-MgTeamScheduleTimeOffRequest /teams/{teamId}/schedule/timeOffRequests
List timeOffRequest
Get-MgTeamScheduleTimeOffRequest /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}
Get timeOffRequest
Invoke-MgClockTeamScheduleTimeCardIn /teams/{teamId}/schedule/timeCards/clockIn
timeCard: clockIn
Invoke-MgClockTeamScheduleTimeCardOut /teams/{teamsId}/schedule/timeCards/{timeCardId}/clockOut
timeCard: clockOut
Invoke-MgShareTeamSchedule /teams/{teamId}/schedule/share
schedule: share
New-MgTeamScheduleOfferShiftRequest /teams/{teamId}/schedule/offerShiftRequests
Create offerShiftRequest
New-MgTeamScheduleOpenShift /teams/{id}/schedule/openShifts
Create openShift
New-MgTeamScheduleOpenShiftChangeRequest /teams/{id}/schedule/openShiftChangeRequests
Create openShiftChangeRequest
New-MgTeamScheduleSchedulingGroup /teams/{teamId}/schedule/schedulingGroups
Create schedulingGroup
New-MgTeamScheduleShift /teams/{teamId}/schedule/shifts
Create shift
New-MgTeamScheduleSwapShiftChangeRequest /teams/{teamId}/schedule/swapShiftsChangeRequests
Create swapshiftRequest
New-MgTeamScheduleTimeCard /teams/{teamsId}/schedule/timeCards
Create timeCard
New-MgTeamScheduleTimeOff /teams/{teamId}/schedule/timesOff
Create timeOff
New-MgTeamScheduleTimeOffReason /teams/{teamId}/schedule/timeOffReasons
Create timeOffReason
New-MgTeamScheduleTimeOffRequest /teams/{teamId}/schedule/timeOffRequests
Create timeOffRequest
Remove-MgTeamScheduleOpenShift /teams/{id}/schedule/openShifts/{openShiftId}
Delete openShift
Remove-MgTeamScheduleSchedulingGroup /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
Delete schedulingGroup
Remove-MgTeamScheduleShift /teams/{teamId}/schedule/shifts/{shiftId}
Delete shift
Remove-MgTeamScheduleTimeCard /teams/{teamsId}/schedule/timeCards/{timeCardId}
Delete timeCard
Remove-MgTeamScheduleTimeOff /teams/{teamId}/schedule/timesOff/{timeOffId}
Delete timeOff
Remove-MgTeamScheduleTimeOffReason /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
Delete timeOffReason
Remove-MgTeamScheduleTimeOffRequest /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}
Delete timeOffRequest
Set-MgTeamSchedule /teams/{teamId}/schedule
Create or replace schedule
Exact Microsoft Learn PowerShell match

Microsoft Graph PowerShell beta commands are mapped directly from refreshed Microsoft Learn PowerShell snippets.

Commands
Get-MgBetaTeamSchedule /teams/{teamId}/schedule
Get schedule
Get-MgBetaTeamScheduleOfferShiftRequest /teams/{teamId}/schedule/offerShiftRequests
List offerShiftRequest
Get-MgBetaTeamScheduleOfferShiftRequest /teams/{teamId}/schedule/offerShiftRequests/{offerShiftRequestId}
Get offerShiftRequest
Get-MgBetaTeamScheduleOpenShift /teams/{id}/schedule/openShifts
List openShifts
Get-MgBetaTeamScheduleOpenShift /teams/{id}/schedule/openShifts/{openShiftId}
Get openShift
Get-MgBetaTeamScheduleOpenShiftChangeRequest /teams/{id}/schedule/openShiftChangeRequests
List openShiftChangeRequests
Get-MgBetaTeamScheduleOpenShiftChangeRequest /teams/{id}/schedule/openShiftChangeRequests/{openShiftsChangeRequestId}
Get openShiftChangeRequest
Get-MgBetaTeamScheduleSchedulingGroup /teams/{teamId}/schedule/schedulingGroups
List schedulingGroups
Get-MgBetaTeamScheduleSchedulingGroup /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
Get schedulingGroup
Get-MgBetaTeamScheduleShift /teams/{teamId}/schedule/shifts
List shifts
Get-MgBetaTeamScheduleShift /teams/{teamId}/schedule/shifts/{shiftId}
Get shift
Get-MgBetaTeamScheduleSwapShiftChangeRequest /teams/{teamId}/schedule/swapShiftsChangeRequests
Get swapShiftsChangeRequest
Get-MgBetaTeamScheduleSwapShiftChangeRequest /teams/{teamId}/schedule/swapShiftsChangeRequests
List swapShiftsChangeRequest
Get-MgBetaTeamScheduleTimeCard /teams/{teamId}/schedule/timeCards
List timeCard
Get-MgBetaTeamScheduleTimeCard /teams/{teamId}/schedule/timeCards/{timeCardId}
Get timeCard
Get-MgBetaTeamScheduleTimeOff /teams/{teamId}/schedule/timesOff
List timesOff
Get-MgBetaTeamScheduleTimeOff /teams/{teamId}/schedule/timesOff/{timeOffId}
Get timeOff
Get-MgBetaTeamScheduleTimeOffReason /teams/{teamId}/schedule/timeOffReasons
List timeOffReasons
Get-MgBetaTeamScheduleTimeOffReason /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
Get timeOffReason
Get-MgBetaTeamScheduleTimeOffRequest /teams/{teamId}/schedule/timeOffRequests
List timeOffRequests
Get-MgBetaTeamScheduleTimeOffRequest /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}
Get timeOffRequest
Invoke-MgBetaClockTeamScheduleTimeCardIn /teams/{teamId}/schedule/timeCards/clockIn
timeCard: clockIn
Invoke-MgBetaClockTeamScheduleTimeCardOut /teams/{teamId}/schedule/timeCards/{timeCardID}/clockOut
timeCard: clockOut
Invoke-MgBetaShareTeamSchedule /teams/{teamId}/schedule/share
schedule: share
New-MgBetaTeamScheduleOfferShiftRequest /teams/{teamId}/schedule/offerShiftRequests
Create offerShiftRequest
New-MgBetaTeamScheduleOpenShift /teams/{id}/schedule/openShifts
Create openShift
New-MgBetaTeamScheduleSchedulingGroup /teams/{teamId}/schedule/schedulingGroups
Create schedulingGroup
New-MgBetaTeamScheduleShift /teams/{teamId}/schedule/shifts
Create shift
New-MgBetaTeamScheduleTimeCard /teams/{teamId}/schedule/timeCards
Create timeCard
New-MgBetaTeamScheduleTimeOff /teams/{teamId}/schedule/timesOff
Create timeOff
New-MgBetaTeamScheduleTimeOffReason /teams/{teamId}/schedule/timeOffReasons
Create timeOffReason
New-MgBetaTeamScheduleTimeOffRequest /teams/{teamId}/schedule/timeOffRequests
Create timeOffRequest
Remove-MgBetaTeamScheduleOpenShift /teams/{id}/schedule/openShifts/{openShiftId}
Delete openShift
Remove-MgBetaTeamScheduleSchedulingGroup /teams/{teamId}/schedule/schedulingGroups/{schedulingGroupId}
Delete schedulingGroup
Remove-MgBetaTeamScheduleShift /teams/{teamId}/schedule/shifts/{shiftId}
Delete shift
Remove-MgBetaTeamScheduleTimeCard /teams/{teamId}/schedule/timeCards/{timeCardId}
Delete timeCard
Remove-MgBetaTeamScheduleTimeOff /teams/{teamId}/schedule/timesOff/{timeOffId}
Delete timeOff
Remove-MgBetaTeamScheduleTimeOffReason /teams/{teamId}/schedule/timeOffReasons/{timeOffReasonId}
Delete timeOffReason
Remove-MgBetaTeamScheduleTimeOffRequest /teams/{teamId}/schedule/timeOffRequests/{timeOffRequestId}
Delete timeOffRequest
Set-MgBetaTeamSchedule /teams/{teamId}/schedule
Create or replace schedule

Code Examples

C# / .NET SDK
Create offerShiftRequest
// Code snippets are only available for the latest version. Current version is 5.x

// Dependencies
using Microsoft.Graph.Models;

var requestBody = new OfferShiftRequest
{
	SenderShiftId = "SHFT_f7e484ed-fdd6-421c-92d9-0bc9e62e2c29",
	SenderMessage = "Having a family emergency, could you take this shift for me?",
	RecipientUserId = "fe278b61-21ac-4872-8b41-1962bbb98e3c",
};

// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Teams["{team-id}"].Schedule.OfferShiftRequests.PostAsync(requestBody, (requestConfiguration) =>
{
	requestConfiguration.Headers.Add("Authorization", "Bearer {token}");
});
JavaScript
changeTrackedEntity: stageForDeletion
const options = {
	authProvider,
};

const client = Client.init(options);

await client.api('/teams/3d88b7a2-f988-4f4b-bb34-d66df66af126/schedule/openShifts/OPNSHFT_577b75d2-a927-48c0-a5d1-dc984894e7b8/stageForDeletion')
	.post();
PowerShell
Create offerShiftRequest
Import-Module Microsoft.Graph.Teams

$params = @{
	senderShiftId = "SHFT_f7e484ed-fdd6-421c-92d9-0bc9e62e2c29"
	senderMessage = "Having a family emergency, could you take this shift for me?"
	recipientUserId = "fe278b61-21ac-4872-8b41-1962bbb98e3c"
}

New-MgTeamScheduleOfferShiftRequest -TeamId $teamId -BodyParameter $params
Python
Create offerShiftRequest
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.teams.item.schedule.offer_shift_requests.offer_shift_requests_request_builder import OfferShiftRequestsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
from msgraph.generated.models.offer_shift_request import OfferShiftRequest
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = OfferShiftRequest(
	sender_shift_id = "SHFT_f7e484ed-fdd6-421c-92d9-0bc9e62e2c29",
	sender_message = "Having a family emergency, could you take this shift for me?",
	recipient_user_id = "fe278b61-21ac-4872-8b41-1962bbb98e3c",
)

request_configuration = RequestConfiguration()
request_configuration.headers.add("Authorization", "Bearer {token}")

result = await graph_client.teams.by_team_id('team-id').schedule.offer_shift_requests.post(request_body, request_configuration = request_configuration)

App Registration

1

Navigate to Azure Portal

Go to App registrations in Microsoft Entra admin center

2

Add API Permission

Select your app → API permissions → Add a permission → Microsoft Graph

3

Select Permission Type

Choose Application permissions or delegated permissions and search for Schedule.ReadWrite.All

4

Grant Admin Consent

Application permissions always require admin consent.